Class BuildLogFileAccessor


  • @NotThreadSafe
    public class BuildLogFileAccessor
    extends Object
    This class provides a mechanism to perform operations on build/deployment log files. An accessor class must be instantiated for each build log file. Other notes: When using the file iterator, it is not thread safe. Be sure to open the file for iteration and close it once you are done.
    • Method Detail

      • openFileForIteration

        public boolean openFileForIteration()
        Open the file contained within this accessor to perform iterations (must be called before the hasNext(), nextLogEntry() and nextLine()).
        Returns:
        true if the opening of the file was successful, otherwise false.
      • closeFileForIteration

        public void closeFileForIteration()
        close the file iterator
      • hasNext

        public boolean hasNext()
        Requires file to be opened for iteration
        Returns:
        true if there is another line in the file, otherwise false
      • nextLogEntry

        @Nullable
        public @Nullable LogEntry nextLogEntry()
        Requires file to be opened for iteration
        Returns:
        The next line in the file as a LogEntry, null if no more lines
      • nextLine

        @Nullable
        public @Nullable String nextLine()
        Requires file to be opened for iteration
        Returns:
        The next line in the file as a String, null if no more lines
      • searchFileForEntry

        @Nullable
        public @Nullable LogEntry searchFileForEntry​(@Nullable
                                                     @Nullable String textToSearchFor,
                                                     boolean searchInErrorMessages)
                                              throws IOException
        Looks incrementally through the file to see if the specified text exists
        Parameters:
        textToSearchFor - the specific text to search for
        searchInErrorMessages - search also in error messages
        Returns:
        the LogEntry that the text was found in or null if the text was not found
        Throws:
        IOException - if there were errors accessing the file
      • searchFileForEntry

        @Nullable
        public @Nullable LogEntry searchFileForEntry​(@Nullable
                                                     @Nullable String textToSearchFor,
                                                     int lastNLines,
                                                     boolean searchInErrorMessages)
                                              throws IOException
        Searchers for particular text within the last n lines of a file (eg search within the last 10 lines for a success message)
        Parameters:
        textToSearchFor - String text to find in file
        lastNLines - number of lines from end to search from
        searchInErrorMessages - search also in error messages
        Returns:
        the LogEntry the text was found in or null if the text was not found
        Throws:
        IOException - if error closing the log file
      • getLastNLogs

        public List<LogEntry> getLastNLogs​(int numLogs)
                                    throws IOException
        Retrives a List of the last N logs. Avoid using this with large numbers as it has the potential to cause out of memory errors
        Parameters:
        numLogs - number of logs to retrieve
        Returns:
        List of the last N LogEntry Objects in the file, may return an empty list
        Throws:
        IOException - if errors access the build log file
      • getNumberOfLinesInFile

        public int getNumberOfLinesInFile()
                                   throws IOException
        Counts the number of lines in the file.
        Returns:
        number of lines in file
        Throws:
        IOException - if errors accessing the file
      • getNumberOfLinesOfType

        public int getNumberOfLinesOfType​(Collection<Class<?>> types)
                                   throws IOException
        Counts the number of lines in the log file, only taking into account log entries of specified types. More general types will include number of log entries for more specific types (e.g. querying for SimpleLogEntry will also include log count for types CommandLogEntry or ErrorLogEntry)
        Parameters:
        types - types of log entries for which to calculate result
        Returns:
        number of log entries of given types
        Throws:
        IOException - if errors occur while accessing the log file