Class MergedRepository
- All Implemented Interfaces:
- Iterable<RepositoryLogRecord>
RepositoryLogRecord collections together.
 For merging it uses record's timestamp retrieved via RepositoryLogRecordHeader.getMillis()
 method to put records in ascending order in the output. It assumes that records in input streams
 have already been sorted into ascending order.
 
 For example, to merge log records from the recent run of servers storing their
 log records in repositories the following
 code can be used:
 
 
 
 A similar sample, but merging the logs of a z/OS controller with all of the associated servants:
 
                        // One argument per repository base, each will be merged. Example of arg0:  /opt/IBM/WasX/profiles/AppSrv01/logs/server1
        public static void main(String[] args) {
                ServerInstanceLogRecordList [] silrlArray = new ServerInstanceLogRecordList[args.length] ;
                for (int i = 0; i < args.length; i++) {
                                        // Create a repository reader (requires base directory of repository 
                        RepositoryReader logRepository = new RepositoryReaderImpl(args[i]) ;            
                                        // Pull from just the current instance of the server for merging on appropriate times
                                        // Could pull from all or use filter criteria that would select several, this is for simplicity
                        silrlArray[i] = logRepository.getLogListForCurrentServerInstance() ;
                }
                MergedRepository result = new MergedRepository(silrlArray) ;    // Merge the current serverInstance from each server
                for (RepositoryLogRecord repositoryLogRecord : result) {                // For each record in new merged set
                        String pid = result.getHeader(repositoryLogRecord).getProperty(ServerInstanceLogRecordList.HEADER_PROCESSID) ;
                                // Just printing some key information here.  Note that the repositoryRecord exposes all fields
                                // with simple get methods and gives access to the header information associated with each as well
                        System.out.println("Pid: "+pid+" Rec:  "+repositoryLogRecord.getFormattedMessage());
                }
        }
 
 
 
        public static void main(String[] args) {
                        // The string arg here is just to the directory where the log files reside (ie: <profileHome>/logs/server1)
                RepositoryReader logRepository = new RepositoryReaderImpl(args[0]) ;            
                                // Get iterator of server instances (start/stop of the server) extracting all log messages with
                                // severity between INFO and SEVERE.  Lots of different filtering options, this is just one sample
                Iterable<ServerInstanceLogRecordList> repResults = logRepository.getLogLists(Level.INFO, Level.SEVERE) ;
                                // Go through each server instance
                for (ServerInstanceLogRecordList silrl: repResults) {           // For each list (server lifeCycle)
                Map <String, ServerInstanceLogRecordList> servantMap = silrl.getChildren() ;
                Iterator <String> servantKeys = servantMap.keySet().iterator() ;
                                // Array of lists will be one for each servant + 1 for the controller
                ServerInstanceLogRecordList [] silrlArray = new ServerInstanceLogRecordList[servantMap.size()+1] ;
                int curIdx = 0 ;                // Which index into the array of record lists
                silrlArray[curIdx++] = silrl ;
                while (servantKeys.hasNext()) {
                        String label = servantKeys.next() ;
                        silrlArray[curIdx++] = servantMap.get(label) ;
                }
                System.out.println("\n\n\nPrinting results for a serverInstance\n");
                        MergedRepository result = new MergedRepository(silrlArray) ;    // Merge this controller with all servants
                        for (RepositoryLogRecord repositoryLogRecord : result) {                // For each record in new merged set
                                String pid = result.getHeader(repositoryLogRecord).getProperty(ServerInstanceLogRecordList.HEADER_PROCESSID) ;
                                        // Just printing some key information here.  Note that the repositoryRecord exposes all fields
                                        // with simple get methods and gives access to the header information associated with each as well
                                System.out.println(pid+"  "+repositoryLogRecord.getFormattedMessage());
                        }
                }
        }
 
 
- 
Constructor SummaryConstructorsConstructorDescriptionMergedRepository(ServerInstanceLogRecordList[] servers) Creates new iterable instance from the list of results obtained from different servers.Creates new iterable instance from the list of results obtained from different servers.
- 
Method SummaryModifier and TypeMethodDescriptiongetHeader(RepositoryLogRecord record) Returns header information for the server this record was created on.iterator()Methods inherited from class java.lang.Objectequals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.lang.IterableforEach, spliterator
- 
Constructor Details- 
MergedRepositoryCreates new iterable instance from the list of results obtained from different servers.- Parameters:
- servers- list of log record lists from different servers.
 
- 
MergedRepositoryCreates new iterable instance from the list of results obtained from different servers.- Parameters:
- servers- array of log record lists from different servers.
 
 
- 
- 
Method Details- 
getHeaderReturns header information for the server this record was created on.- Parameters:
- record- instance previously return by an iterator over this merged list.
- Returns:
- header corresponding to the record.
 
- 
iterator- Specified by:
- iteratorin interface- Iterable<RepositoryLogRecord>
 
 
-