Class ExtLogRecord

java.lang.Object
java.util.logging.LogRecord
org.jboss.logmanager.ExtLogRecord
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
WrappedExtLogRecord

public class ExtLogRecord extends LogRecord
An extended log record, which includes additional information including MDC/NDC and correct caller location (even in the presence of a logging facade).
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • loggerClassName

      private final transient String loggerClassName
    • calculateCaller

      private transient boolean calculateCaller
    • ndc

      private String ndc
    • formatStyle

      private ExtLogRecord.FormatStyle formatStyle
    • mdcCopy

      private FastCopyHashMap<String,Object> mdcCopy
    • sourceLineNumber

      private int sourceLineNumber
    • sourceFileName

      private String sourceFileName
    • resourceKey

      private String resourceKey
    • formattedMessage

      private String formattedMessage
    • threadName

      private String threadName
  • Constructor Details

    • ExtLogRecord

      public ExtLogRecord(Level level, String msg, String loggerClassName)
      Construct a new instance. Grabs the current NDC immediately. MDC is deferred.
      Parameters:
      level - a logging level value
      msg - the raw non-localized logging message (may be null)
      loggerClassName - the name of the logger class
    • ExtLogRecord

      public ExtLogRecord(Level level, String msg, ExtLogRecord.FormatStyle formatStyle, String loggerClassName)
      Construct a new instance. Grabs the current NDC immediately. MDC is deferred.
      Parameters:
      level - a logging level value
      msg - the raw non-localized logging message (may be null)
      formatStyle - the parameter format style to use
      loggerClassName - the name of the logger class
    • ExtLogRecord

      public ExtLogRecord(ExtLogRecord original)
      Make a copy of a log record.
      Parameters:
      original - the original
  • Method Details

    • wrap

      public static ExtLogRecord wrap(LogRecord rec)
      Wrap a JDK log record. If the target record is already an ExtLogRecord, it is simply returned. Otherwise a wrapper record is created and returned.
      Parameters:
      rec - the original record
      Returns:
      the wrapped record
    • writeObject

      private void writeObject(ObjectOutputStream oos) throws IOException
      Throws:
      IOException
    • disableCallerCalculation

      public void disableCallerCalculation()
      Disable caller calculation for this record. If the caller has already been calculated, leave it; otherwise set the caller to "unknown".
    • copyAll

      public void copyAll()
      Copy all fields and prepare this object to be passed to another thread or to be serialized. Calling this method more than once has no additional effect and will not incur extra copies.
    • copyMdc

      public void copyMdc()
      Copy the MDC. Call this method before passing this log record to another thread. Calling this method more than once has no additional effect and will not incur extra copies.
    • getMdc

      public String getMdc(String key)
      Get the value of an MDC property.
      Parameters:
      key - the property key
      Returns:
      the property value
    • getMdcCopy

      public Map<String,String> getMdcCopy()
      Get a copy of all the MDC properties for this log record. If the MDC has not yet been copied, this method will copy it.
      Returns:
      a copy of the MDC map
    • putMdc

      public String putMdc(String key, String value)
      Change an MDC value on this record. If the MDC has not yet been copied, this method will copy it.
      Parameters:
      key - the key to set
      value - the value to set it to
      Returns:
      the old value, if any
    • removeMdc

      public String removeMdc(String key)
      Remove an MDC value on this record. If the MDC has not yet been copied, this method will copy it.
      Parameters:
      key - the key to remove
      Returns:
      the old value, if any
    • setMdc

      public void setMdc(Map<?,?> sourceMap)
      Create a new MDC using a copy of the source map.
      Parameters:
      sourceMap - the source man, must not be null
    • getNdc

      public String getNdc()
      Get the NDC for this log record.
      Returns:
      the NDC
    • setNdc

      public void setNdc(String value)
      Change the NDC for this log record.
      Parameters:
      value - the new NDC value
    • getLoggerClassName

      public String getLoggerClassName()
      Get the class name of the logger which created this record.
      Returns:
      the class name
    • getFormatStyle

      public ExtLogRecord.FormatStyle getFormatStyle()
      Get the format style for the record.
      Returns:
      the format style
    • calculateCaller

      private void calculateCaller()
      Find the first stack frame below the call to the logger, and populate the log record with that information.
    • setUnknownCaller

      private void setUnknownCaller()
    • getSourceLineNumber

      public int getSourceLineNumber()
      Get the source line number for this log record.

      Note that this line number is not verified and may be spoofed. This information may either have been provided as part of the logging call, or it may have been inferred automatically by the logging framework. In the latter case, the information may only be approximate and may in fact describe an earlier call on the stack frame. May be -1 if no information could be obtained.

      Returns:
      the source line number
    • setSourceLineNumber

      public void setSourceLineNumber(int sourceLineNumber)
      Set the source line number for this log record.
      Parameters:
      sourceLineNumber - the source line number
    • getSourceFileName

      public String getSourceFileName()
      Get the source file name for this log record.

      Note that this file name is not verified and may be spoofed. This information may either have been provided as part of the logging call, or it may have been inferred automatically by the logging framework. In the latter case, the information may only be approximate and may in fact describe an earlier call on the stack frame. May be null if no information could be obtained.

      Returns:
      the source file name
    • setSourceFileName

      public void setSourceFileName(String sourceFileName)
      Set the source file name for this log record.
      Parameters:
      sourceFileName - the source file name
    • getSourceClassName

      public String getSourceClassName()
      Overrides:
      getSourceClassName in class LogRecord
    • setSourceClassName

      public void setSourceClassName(String sourceClassName)
      Overrides:
      setSourceClassName in class LogRecord
    • getSourceMethodName

      public String getSourceMethodName()
      Overrides:
      getSourceMethodName in class LogRecord
    • setSourceMethodName

      public void setSourceMethodName(String sourceMethodName)
      Overrides:
      setSourceMethodName in class LogRecord
    • getFormattedMessage

      public String getFormattedMessage()
      Get the fully formatted log record, with resources resolved and parameters applied.
      Returns:
      the formatted log record
    • getResourceKey

      public String getResourceKey()
      Get the resource key, if any. If the log message is not localized, then the key is null.
      Returns:
      the resource key
    • formatRecord

      private String formatRecord()
    • getThreadName

      public String getThreadName()
      Get the thread name of this logging event.
      Returns:
      the thread name
    • setThreadName

      public void setThreadName(String threadName)
      Set the thread name of this logging event.
      Parameters:
      threadName - the thread name
    • setMessage

      public void setMessage(String message)
      Set the raw message. Any cached formatted message is discarded. The parameter format is set to be MessageFormat-style.
      Overrides:
      setMessage in class LogRecord
      Parameters:
      message - the new raw message
    • setMessage

      public void setMessage(String message, ExtLogRecord.FormatStyle formatStyle)
      Set the raw message. Any cached formatted message is discarded. The parameter format is set according to the given argument.
      Parameters:
      message - the new raw message
      formatStyle - the format style to use
    • setParameters

      public void setParameters(Object[] parameters)
      Set the parameters to the log message. Any cached formatted message is discarded.
      Overrides:
      setParameters in class LogRecord
      Parameters:
      parameters - the log message parameters. (may be null)
    • setResourceBundle

      public void setResourceBundle(ResourceBundle bundle)
      Set the localization resource bundle. Any cached formatted message is discarded.
      Overrides:
      setResourceBundle in class LogRecord
      Parameters:
      bundle - localization bundle (may be null)
    • setResourceBundleName

      public void setResourceBundleName(String name)
      Set the localization resource bundle name. Any cached formatted message is discarded.
      Overrides:
      setResourceBundleName in class LogRecord
      Parameters:
      name - localization bundle name (may be null)