Class OneLineFormatter

  • Direct Known Subclasses:
    JsonFormatter

    public class OneLineFormatter
    extends java.util.logging.Formatter
    Provides same information as default log format but on a single line to make it easier to grep the logs. The only exception is stacktraces which are always preceded by whitespace to make it simple to skip them.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addTimestamp​(java.lang.StringBuilder buf, long timestamp)  
      java.lang.String format​(java.util.logging.LogRecord record)  
      protected static java.lang.String getThreadName​(int logRecordThreadId)
      LogRecord has threadID but no thread name.
      java.lang.String getTimeFormat()
      Obtain the format currently being used for time stamps in log messages.
      void setTimeFormat​(java.lang.String timeFormat)
      Specify the time format to use for time stamps in log messages.
      • Methods inherited from class java.util.logging.Formatter

        formatMessage, getHead, getTail
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • OneLineFormatter

        public OneLineFormatter()
    • Method Detail

      • setTimeFormat

        public void setTimeFormat​(java.lang.String timeFormat)
        Specify the time format to use for time stamps in log messages.
        Parameters:
        timeFormat - The format to use using the SimpleDateFormat syntax
      • getTimeFormat

        public java.lang.String getTimeFormat()
        Obtain the format currently being used for time stamps in log messages.
        Returns:
        The current format in SimpleDateFormat syntax
      • format

        public java.lang.String format​(java.util.logging.LogRecord record)
        Specified by:
        format in class java.util.logging.Formatter
      • addTimestamp

        protected void addTimestamp​(java.lang.StringBuilder buf,
                                    long timestamp)
      • getThreadName

        protected static java.lang.String getThreadName​(int logRecordThreadId)
        LogRecord has threadID but no thread name. LogRecord uses an int for thread ID but thread IDs are longs. If the real thread ID > (Integer.MAXVALUE / 2) LogRecord uses it's own ID in an effort to avoid clashes due to overflow.

        Words fail me to describe what I think of the design decision to use an int in LogRecord for a long value and the resulting mess that follows.

        Parameters:
        logRecordThreadId - the thread id
        Returns:
        the thread name