com.ibm.websphere.logging.hpel.reader
Class MergedRepository
- java.lang.Object
-
- com.ibm.websphere.logging.hpel.reader.MergedRepository
-
- All Implemented Interfaces:
- java.lang.Iterable<RepositoryLogRecord>
public class MergedRepository extends java.lang.Object implements java.lang.Iterable<RepositoryLogRecord>
Helper class to merge separateRepositoryLogRecord
collections together. For merging it uses record's timestamp retrieved viaRepositoryLogRecordHeader.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:
// 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 Summary
Constructors Constructor and Description MergedRepository(java.lang.Iterable<ServerInstanceLogRecordList> servers)
Creates new iterable instance from the list of results obtained from different servers.MergedRepository(ServerInstanceLogRecordList[] servers)
Creates new iterable instance from the list of results obtained from different servers.
-
Method Summary
Methods Modifier and Type Method and Description java.util.Properties
getHeader(RepositoryLogRecord record)
Returns header information for the server this record was created on.java.util.Iterator<RepositoryLogRecord>
iterator()
-
-
-
Constructor Detail
-
MergedRepository
public MergedRepository(java.lang.Iterable<ServerInstanceLogRecordList> servers)
Creates new iterable instance from the list of results obtained from different servers.- Parameters:
servers
- list of log record lists from different servers.
-
MergedRepository
public MergedRepository(ServerInstanceLogRecordList[] servers)
Creates new iterable instance from the list of results obtained from different servers.- Parameters:
servers
- array of log record lists from different servers.
-
-
Method Detail
-
getHeader
public java.util.Properties getHeader(RepositoryLogRecord record)
Returns 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
public java.util.Iterator<RepositoryLogRecord> iterator()
- Specified by:
iterator
in interfacejava.lang.Iterable<RepositoryLogRecord>
-
-