Class BasicLogManager

java.lang.Object
org.sosy_lab.common.log.BasicLogManager
All Implemented Interfaces:
AutoCloseable, LogManager

public class BasicLogManager extends Object implements LogManager, AutoCloseable
Default implementation of LogManager.
  • Constructor Details

    • BasicLogManager

      public BasicLogManager(Logger pLogger)
      Constructor which allows to customize where this logger delegates to.

      The feature of truncating long log messages is disabled.

      Parameters:
      pLogger - The Java logger where this logger delegates to.
    • BasicLogManager

      public BasicLogManager(Logger pLogger, int pTruncateSize)
      Constructor which allows to customize where this logger delegates to.
      Parameters:
      pLogger - The Java logger where this logger delegates to.
      pTruncateSize - A positive integer threshold for truncating long log messages, or 0 to disable truncation.
  • Method Details

    • createWithHandler

      public static LogManager createWithHandler(Handler handler)
      Create a BasicLogManager which delegates to a new logger with only the given Handler.
      Parameters:
      handler - The target handler.
    • create

      public static LogManager create(Configuration config) throws InvalidConfigurationException
      Create a BasicLogManager which logs to a file and the console according to user configuration.

      This also adds an MXBean that allows runtime control of some logging options.

      Throws:
      InvalidConfigurationException
    • create

      public static LogManager create(LoggingOptions options)
      Create a BasicLogManager which logs to a file and the console according to specified options.

      This also adds an MXBean that allows runtime control of some logging options.

      Most users will want to use create(Configuration) instead.

    • withComponentName

      public LogManager withComponentName(String pName)
      Description copied from interface: LogManager
      Returns a new LogManager instance which may use the given name as an indicator from which component a log message comes from.
      Specified by:
      withComponentName in interface LogManager
      Parameters:
      pName - A non-empty string.
      Returns:
      A LogManager instance.
    • wouldBeLogged

      public boolean wouldBeLogged(Level priority)
      Returns true if a message with the given log level would be logged.
      Specified by:
      wouldBeLogged in interface LogManager
      Parameters:
      priority - the log level
      Returns:
      whether this log level is enabled
    • log

      public void log(Level priority, Object... args)
      Logs any message occurring during program execution. The message is constructed lazily by concatenating the parts with " ". The caller should not use string concatenation to create the message in order to increase performance if the message is never logged.
      Specified by:
      log in interface LogManager
      Parameters:
      priority - the log level for the message
      args - the parts of the message (can be an arbitrary number of objects whose Object.toString() method is called)
    • log

      public void log(Level priority, Supplier<String> msgSupplier)
      Description copied from interface: LogManager
      Logs any message occurring during program execution. The message is constructed lazily by asking the provided supplier if necessary.
      Specified by:
      log in interface LogManager
      Parameters:
      priority - the log level for the message
      msgSupplier - a supplier for a non-null log message
    • logf

      @FormatMethod public void logf(Level priority, String format, Object... args)
      Logs any message occurring during program execution. The message is constructed lazily from String.format(format, args).
      Specified by:
      logf in interface LogManager
      Parameters:
      priority - the log level for the message
      format - The format string.
      args - The arguments for the format string.
    • logUserException

      public void logUserException(Level priority, Throwable e, @Nullable String pAdditionalMessage)
      Log a message by printing its message to the user. The details (e.g., stack trace) are hidden from the user and logged with a lower log level.

      Use this method in cases where an expected exception with a useful error message is thrown, e.g. an InvalidConfigurationException.

      If you want to log an IOException because of a write error, it is recommended to write the message like "Could not write FOO to file". The final message will then be "Could not write FOO to file FOO.txt (REASON)".

      Specified by:
      logUserException in interface LogManager
      Parameters:
      priority - the log level for the message
      e - the occurred exception
      pAdditionalMessage - an optional message
    • logfUserException

      @FormatMethod public void logfUserException(Level priority, Throwable e, String format, Object... args)
      Log a message by printing its message to the user. The details (e.g., stack trace) are hidden from the user and logged with a lower log level.

      Use this method in cases where an expected exception with a useful error message is thrown, e.g. an InvalidConfigurationException.

      The message is constructed lazily from String.format(format, args). To make individual arguments lazy, use MoreStrings.lazyString(Supplier).

      If you want to log an IOException because of a write error, it is recommended to write the message like "Could not write FOO to file". The final message will then be "Could not write FOO to file FOO.txt (REASON)".

      Specified by:
      logfUserException in interface LogManager
      Parameters:
      priority - the log level for the message
      e - the occurred exception
      format - The format string.
      args - The arguments for the format string.
    • logDebugException

      public void logDebugException(Throwable pE, @Nullable String pAdditionalMessage)
      Log an exception solely for the purpose of debugging. In default configuration, this exception is not shown to the user!

      Use this method when you want to log an exception that was handled by the catching site, but you don't want to forget the information completely.

      Specified by:
      logDebugException in interface LogManager
      Parameters:
      pE - the occurred exception
      pAdditionalMessage - an optional message
    • logDebugException

      public void logDebugException(Throwable e)
      Log an exception solely for the purpose of debugging. In default configuration, this exception is not shown to the user!

      Use this method when you want to log an exception that was handled by the catching site, but you don't want to forget the information completely.

      Specified by:
      logDebugException in interface LogManager
      Parameters:
      e - the occurred exception
    • logfDebugException

      @FormatMethod public void logfDebugException(Throwable e, String format, Object... args)
      Log an exception solely for the purpose of debugging. In default configuration, this exception is not shown to the user!

      Use this method when you want to log an exception that was handled by the catching site, but you don't want to forget the information completely.

      The message is constructed lazily from String.format(format, args). To make individual arguments lazy, use MoreStrings.lazyString(Supplier).

      Specified by:
      logfDebugException in interface LogManager
      Parameters:
      e - the occurred exception
      format - The format string.
      args - The arguments for the format string.
    • logException

      public void logException(Level pPriority, Throwable pE, @Nullable String pAdditionalMessage)
      Description copied from interface: LogManager
      Log an exception by printing the full details to the user.

      This method should only be used in cases where logUserException and logDebugException are not acceptable.

      Specified by:
      logException in interface LogManager
      Parameters:
      pPriority - the log level for the message
      pE - the occurred exception
      pAdditionalMessage - an optional message
    • logfException

      @FormatMethod public void logfException(Level priority, Throwable e, String format, Object... args)
      Log an exception by printing the full details to the user.

      This method should only be used in cases where logUserException and logDebugException are not acceptable.

      The message is constructed lazily from String.format(format, args). To make individual arguments lazy, use MoreStrings.lazyString(Supplier).

      Specified by:
      logfException in interface LogManager
      Parameters:
      priority - the log level for the message
      e - the occurred exception
      format - The format string.
      args - The arguments for the format string.
    • flush

      public void flush()
      Description copied from interface: LogManager
      Flush all handlers of this logger.
      Specified by:
      flush in interface LogManager
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable