net.i2p.util

## Class LogManager

- java.lang.Object
- - net.i2p.util.LogManager

- All Implemented Interfaces:
    Flushable

      public class LogManager
      extends Object
      implements Flushable

  Manages the logging system, loading (and reloading) the configuration file, coordinating the log limits, and storing the set of log records pending. This also fires off a LogWriter thread that pulls pending records off and writes them where appropriate. As of 0.9.41, this class may be overridden via I2PAppContext.setLogManager()

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static char` | `CLASS` These define the characters in the format line of the config file
    `static String` | `CONFIG_LOCATION_DEFAULT`
    `static String` | `CONFIG_LOCATION_PROP`
    `static char` | `DATE` These define the characters in the format line of the config file
    `static int` | `DEFAULT_CONSOLEBUFFERSIZE`
    `static String` | `DEFAULT_DATEFORMAT` blank means default short date and medium time for the locale - see DateFormat
    `static String` | `DEFAULT_DEFAULTLEVEL`
    `static boolean` | `DEFAULT_DISPLAYONSCREEN`
    `static String` | `DEFAULT_FILENAME`
    `static String` | `DEFAULT_FILESIZE`
    `static String` | `DEFAULT_FORMAT`
    `static String` | `DEFAULT_ONSCREENLEVEL`
    `static String` | `DEFAULT_ROTATIONLIMIT`
    `static String` | `FILENAME_OVERRIDE_PROP`
    `static char` | `MESSAGE` These define the characters in the format line of the config file
    `static char` | `PRIORITY` These define the characters in the format line of the config file
    `static String` | `PROP_CONSOLEBUFFERSIZE`
    `static String` | `PROP_DATEFORMAT`
    `static String` | `PROP_DEFAULTLEVEL`
    `static String` | `PROP_DISPLAYONSCREEN`
    `static String` | `PROP_DISPLAYONSCREENLEVEL`
    `static String` | `PROP_FILENAME`
    `static String` | `PROP_FILESIZE`
    `static String` | `PROP_FORMAT`
    `static String` | `PROP_RECORD_PREFIX`
    `static String` | `PROP_ROTATIONLIMIT`
    `static char` | `THREAD` These define the characters in the format line of the config file

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LogManager(I2PAppContext context)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `(package private) void` | `addLog(Log log)` If the log already exists, its priority is set here but cannot be changed later, as it becomes an "orphan" not tracked by the manager.
    `(package private) void` | `addRecord(LogRecord record)` Used by Log to add records to the queue.
    `String` | `currentFile()` File may not exist or have old logs in it if not opened yet
    `boolean` | `displayOnScreen()`
    `void` | `flush()` Flush any pending records to disk.
    `String` | `getBaseLogfilename()`
    `LogConsoleBuffer` | `getBuffer()`
    `int` | `getConsoleBufferSize()`
    `(package private) I2PAppContext` | `getContext()` Convenience method for LogRecordFormatter
    `SimpleDateFormat` | `getDateFormat()` Any usage of returned formatter must be synchronized!
    `String` | `getDateFormatPattern()`
    `String` | `getDefaultLimit()`
    `int` | `getDisplayOnScreenLevel()`
    `int` | `getFileSize()`
    `static int` | `getFileSize(String size)` Determine how many bytes are in the given formatted string (5m, 60g, 100k, etc) Size may be k, m, or g; a trailing b is ignored.
    `char[]` | `getFormat()`
    `Properties` | `getLimits()` Return a mapping of the explicit overrides - path prefix to (text formatted) limit.
    `Log` | `getLog(Class<?> cls)`
    `Log` | `getLog(Class<?> cls, String name)`
    `Log` | `getLog(String name)`
    `List<Log>` | `getLogs()` now used by ConfigLogingHelper
    `(package private) long` | `getMinGzipSize()` Get the minimum size for gzip compression.
    `(package private) Queue<LogRecord>` | `getQueue()` Zero-copy.
    `int` | `getRotationLimit()`
    `(package private) void` | `rereadConfig()` Called periodically by the log writer's thread Do not log here, deadlock of LogWriter
    `boolean` | `saveConfig()` Save the current logging configuration to disk.
    `void` | `setBaseLogfilename(String filenamePattern)`
    `void` | `setConfig(String filename)`
    `boolean` | `setDateFormat(String format)` Update the date format Do not log here, deadlock of LogWriter via rereadConfig().
    `void` | `setDefaultLimit(String lim)`
    `void` | `setFileSize(int numBytes)` Update the log file size limit
    `void` | `setFormat(char[] fmt)`
    `void` | `setGzip(boolean yes)` Enable or disable gzip compression for rotated log files.
    `void` | `setLimits(Properties limits)` Update the existing limit overrides
    `(package private) boolean` | `shouldDropDuplicates()`
    `boolean` | `shouldGzip()` Check if gzip compression should be used for rotated log files.
    `void` | `shutdown()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### CLASS

          public static final char CLASS

      These define the characters in the format line of the config file
      See Also:
        Constant Field Values

    - #### CONFIG_LOCATION_DEFAULT

          public static final String CONFIG_LOCATION_DEFAULT

      See Also:
        Constant Field Values

    - #### CONFIG_LOCATION_PROP

          public static final String CONFIG_LOCATION_PROP

      See Also:
        Constant Field Values

    - #### DATE

          public static final char DATE

      These define the characters in the format line of the config file
      See Also:
        Constant Field Values

    - #### DEFAULT_CONSOLEBUFFERSIZE

          public static final int DEFAULT_CONSOLEBUFFERSIZE

      See Also:
        Constant Field Values

    - #### DEFAULT_DATEFORMAT

          public static final String DEFAULT_DATEFORMAT

      blank means default short date and medium time for the locale - see DateFormat
      See Also:
        Constant Field Values

    - #### DEFAULT_DEFAULTLEVEL

          public static final String DEFAULT_DEFAULTLEVEL

      See Also:
        Constant Field Values

    - #### DEFAULT_DISPLAYONSCREEN

          public static final boolean DEFAULT_DISPLAYONSCREEN

      See Also:
        Constant Field Values

    - #### DEFAULT_FILENAME

          public static final String DEFAULT_FILENAME

      See Also:
        Constant Field Values

    - #### DEFAULT_FILESIZE

          public static final String DEFAULT_FILESIZE

      See Also:
        Constant Field Values

    - #### DEFAULT_FORMAT

          public static final String DEFAULT_FORMAT

      See Also:
        Constant Field Values

    - #### DEFAULT_ONSCREENLEVEL

          public static final String DEFAULT_ONSCREENLEVEL

      See Also:
        Constant Field Values

    - #### DEFAULT_ROTATIONLIMIT

          public static final String DEFAULT_ROTATIONLIMIT

      See Also:
        Constant Field Values

    - #### FILENAME_OVERRIDE_PROP

          public static final String FILENAME_OVERRIDE_PROP

      See Also:
        Constant Field Values

    - #### MESSAGE

          public static final char MESSAGE

      These define the characters in the format line of the config file
      See Also:
        Constant Field Values

    - #### PRIORITY

          public static final char PRIORITY

      These define the characters in the format line of the config file
      See Also:
        Constant Field Values

    - #### PROP_CONSOLEBUFFERSIZE

          public static final String PROP_CONSOLEBUFFERSIZE

      See Also:
        Constant Field Values

    - #### PROP_DATEFORMAT

          public static final String PROP_DATEFORMAT

      See Also:
        Constant Field Values

    - #### PROP_DEFAULTLEVEL

          public static final String PROP_DEFAULTLEVEL

      See Also:
        Constant Field Values

    - #### PROP_DISPLAYONSCREEN

          public static final String PROP_DISPLAYONSCREEN

      See Also:
        Constant Field Values

    - #### PROP_DISPLAYONSCREENLEVEL

          public static final String PROP_DISPLAYONSCREENLEVEL

      See Also:
        Constant Field Values

    - #### PROP_FILENAME

          public static final String PROP_FILENAME

      See Also:
        Constant Field Values

    - #### PROP_FILESIZE

          public static final String PROP_FILESIZE

      See Also:
        Constant Field Values

    - #### PROP_FORMAT

          public static final String PROP_FORMAT

      See Also:
        Constant Field Values

    - #### PROP_RECORD_PREFIX

          public static final String PROP_RECORD_PREFIX

      See Also:
        Constant Field Values

    - #### PROP_ROTATIONLIMIT

          public static final String PROP_ROTATIONLIMIT

      See Also:
        Constant Field Values

    - #### THREAD

          public static final char THREAD

      These define the characters in the format line of the config file
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### LogManager

          public LogManager(I2PAppContext context)

  - ### Method Detail

    - #### addLog

          void addLog(Log log)

      If the log already exists, its priority is set here but cannot be changed later, as it becomes an "orphan" not tracked by the manager.

    - #### addRecord

          void addRecord(LogRecord record)

      Used by Log to add records to the queue. This is generally nonblocking and unsyncrhonized but may block when under massive logging load as a way of throttling logging threads.

    - #### currentFile

          public String currentFile()

      File may not exist or have old logs in it if not opened yet
      Returns:
        non-null

    - #### displayOnScreen

          public boolean displayOnScreen()

    - #### flush

          public void flush()

      Flush any pending records to disk. Blocking up to 250 ms.
      Specified by:
        `flush` in interface `Flushable`

    - #### getBaseLogfilename

          public String getBaseLogfilename()

    - #### getBuffer

          public LogConsoleBuffer getBuffer()

    - #### getConsoleBufferSize

          public int getConsoleBufferSize()

    - #### getContext

          I2PAppContext getContext()

      Convenience method for LogRecordFormatter

    - #### getDateFormat

          public SimpleDateFormat getDateFormat()

      Any usage of returned formatter must be synchronized!

    - #### getDateFormatPattern

          public String getDateFormatPattern()

    - #### getDefaultLimit

          public String getDefaultLimit()

    - #### getDisplayOnScreenLevel

          public int getDisplayOnScreenLevel()

    - #### getFileSize

          public int getFileSize()

    - #### getFileSize

          public static int getFileSize(String size)

      Determine how many bytes are in the given formatted string (5m, 60g, 100k, etc) Size may be k, m, or g; a trailing b is ignored. Upper-case is allowed. Spaces between the number and letter is are allowed. The number may be in floating point. 16K min, 2 GB max (returns int)

    - #### getFormat

          public char[] getFormat()

    - #### getLimits

          public Properties getLimits()

      Return a mapping of the explicit overrides - path prefix to (text formatted) limit.

    - #### getLog

          public Log getLog(Class<?> cls)

    - #### getLog

          public Log getLog(Class<?> cls,
                            String name)

    - #### getLog

          public Log getLog(String name)

    - #### getLogs

          public List<Log> getLogs()

      now used by ConfigLogingHelper

    - #### getMinGzipSize

          long getMinGzipSize()

      Get the minimum size for gzip compression.
      Returns:
        the minimum size in bytes, or Long.MAX_VALUE if gzip is disabled

    - #### getQueue

          Queue<LogRecord> getQueue()

      Zero-copy. For the LogWriter

    - #### getRotationLimit

          public int getRotationLimit()

    - #### rereadConfig

          void rereadConfig()

      Called periodically by the log writer's thread Do not log here, deadlock of LogWriter

    - #### saveConfig

          public boolean saveConfig()

      Save the current logging configuration to disk.
      Returns:
        true if the configuration was saved successfully

    - #### setBaseLogfilename

          public void setBaseLogfilename(String filenamePattern)

    - #### setConfig

          public void setConfig(String filename)

    - #### setDateFormat

          public boolean setDateFormat(String format)

      Update the date format Do not log here, deadlock of LogWriter via rereadConfig().
      Parameters:
        `format` - null or empty string means use default format for the locale (with a SHORT date and a MEDIUM time - see DateFormat)
      Returns:
        true if the format was updated, false if it was invalid

    - #### setDefaultLimit

          public void setDefaultLimit(String lim)

    - #### setFileSize

          public void setFileSize(int numBytes)

      Update the log file size limit

    - #### setFormat

          public void setFormat(char[] fmt)

    - #### setGzip

          public void setGzip(boolean yes)

      Enable or disable gzip compression for rotated log files.
      Parameters:
        `yes` - true to enable gzip compression

    - #### setLimits

          public void setLimits(Properties limits)

      Update the existing limit overrides
      Parameters:
        `limits` - mapping of prefix to log level string (not the log #)

    - #### shouldDropDuplicates

          boolean shouldDropDuplicates()

    - #### shouldGzip

          public boolean shouldGzip()

      Check if gzip compression should be used for rotated log files.

    - #### shutdown

          public void shutdown()