Class TraceSystem

java.lang.Object
org.h2.message.TraceSystem
All Implemented Interfaces:
TraceWriter

public class TraceSystem extends Object implements TraceWriter
The trace mechanism is the logging facility of this database. There is usually one trace system per database. It is called 'trace' because the term 'log' is already used in the database domain and means 'transaction log'. It is possible to write after close was called, but that means for each write the file will be opened and closed again (which is slower).
  • Field Details

    • PARENT

      public static final int PARENT
      The parent trace level should be used.
      See Also:
    • OFF

      public static final int OFF
      This trace level means nothing should be written.
      See Also:
    • ERROR

      public static final int ERROR
      This trace level means only errors should be written.
      See Also:
    • INFO

      public static final int INFO
      This trace level means errors and informational messages should be written.
      See Also:
    • DEBUG

      public static final int DEBUG
      This trace level means all type of messages should be written.
      See Also:
    • ADAPTER

      public static final int ADAPTER
      This trace level means all type of messages should be written, but instead of using the trace file the messages should be written to SLF4J.
      See Also:
    • DEFAULT_TRACE_LEVEL_SYSTEM_OUT

      public static final int DEFAULT_TRACE_LEVEL_SYSTEM_OUT
      The default level for system out trace messages.
      See Also:
    • DEFAULT_TRACE_LEVEL_FILE

      public static final int DEFAULT_TRACE_LEVEL_FILE
      The default level for file trace messages.
      See Also:
    • DEFAULT_MAX_FILE_SIZE

      private static final int DEFAULT_MAX_FILE_SIZE
      The default maximum trace file size. It is currently 64 MB. Additionally, there could be a .old file of the same size.
      See Also:
    • CHECK_SIZE_EACH_WRITES

      private static final int CHECK_SIZE_EACH_WRITES
      See Also:
    • levelSystemOut

      private int levelSystemOut
    • levelFile

      private int levelFile
    • levelMax

      private int levelMax
    • maxFileSize

      private int maxFileSize
    • fileName

      private String fileName
    • traces

      private final AtomicReferenceArray<Trace> traces
    • dateFormat

      private SimpleDateFormat dateFormat
    • fileWriter

      private Writer fileWriter
    • printWriter

      private PrintWriter printWriter
    • checkSize

      private int checkSize
      Starts at -1 so that we check the file size immediately upon open. This Can be important if we open and close the trace file without managing to have written CHECK_SIZE_EACH_WRITES bytes each time.
    • closed

      private boolean closed
    • writingErrorLogged

      private boolean writingErrorLogged
    • writer

      private TraceWriter writer
    • sysOut

      private PrintStream sysOut
  • Constructor Details

    • TraceSystem

      public TraceSystem(String fileName)
      Create a new trace system object.
      Parameters:
      fileName - the file name
  • Method Details

    • updateLevel

      private void updateLevel()
    • setSysOut

      public void setSysOut(PrintStream out)
      Set the print stream to use instead of System.out.
      Parameters:
      out - the new print stream
    • getTrace

      public Trace getTrace(int moduleId)
      Get or create a trace object for this module id. Trace modules with id are cached.
      Parameters:
      moduleId - module id
      Returns:
      the trace object
    • getTrace

      public Trace getTrace(String module)
      Create a trace object for this module. Trace modules with names are not cached.
      Parameters:
      module - the module name
      Returns:
      the trace object
    • isEnabled

      public boolean isEnabled(int level)
      Description copied from interface: TraceWriter
      Check the given trace / log level is enabled.
      Specified by:
      isEnabled in interface TraceWriter
      Parameters:
      level - the level
      Returns:
      true if the level is enabled
    • setFileName

      public void setFileName(String name)
      Set the trace file name.
      Parameters:
      name - the file name
    • setMaxFileSize

      public void setMaxFileSize(int max)
      Set the maximum trace file size in bytes.
      Parameters:
      max - the maximum size
    • setLevelSystemOut

      public void setLevelSystemOut(int level)
      Set the trace level to use for System.out
      Parameters:
      level - the new level
    • setLevelFile

      public void setLevelFile(int level)
      Set the file trace level.
      Parameters:
      level - the new level
    • getLevelFile

      public int getLevelFile()
    • format

      private String format(String module, String s)
    • write

      public void write(int level, int moduleId, String s, Throwable t)
      Description copied from interface: TraceWriter
      Write a message.
      Specified by:
      write in interface TraceWriter
      Parameters:
      level - the trace level
      moduleId - the id of the module
      s - the message
      t - the exception (may be null)
    • write

      public void write(int level, String module, String s, Throwable t)
      Description copied from interface: TraceWriter
      Write a message.
      Specified by:
      write in interface TraceWriter
      Parameters:
      level - the trace level
      module - the name of the module
      s - the message
      t - the exception (may be null)
    • writeFile

      private void writeFile(String s, Throwable t)
    • logWritingError

      private void logWritingError(Exception e)
    • openWriter

      private boolean openWriter()
    • closeWriter

      private void closeWriter()
    • close

      public void close()
      Close the writers, and the files if required. It is still possible to write after closing, however after each write the file is closed again (slowing down tracing).
    • setName

      public void setName(String name)
      Description copied from interface: TraceWriter
      Set the name of the database or trace object.
      Specified by:
      setName in interface TraceWriter
      Parameters:
      name - the new name