Class ExtLogRecord

  • All Implemented Interfaces:
    java.io.Serializable

    public class ExtLogRecord
    extends java.util.logging.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:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  ExtLogRecord.FormatStyle
      The format style to use.
    • Constructor Summary

      Constructors 
      Constructor Description
      ExtLogRecord​(java.util.logging.Level level, java.lang.String msg, java.lang.String loggerClassName)
      Construct a new instance.
      ExtLogRecord​(java.util.logging.Level level, java.lang.String msg, ExtLogRecord.FormatStyle formatStyle, java.lang.String loggerClassName)
      Construct a new instance.
      ExtLogRecord​(ExtLogRecord original)
      Make a copy of a log record.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void copyAll()
      Copy all fields and prepare this object to be passed to another thread or to be serialized.
      void copyMdc()
      Copy the MDC.
      void disableCallerCalculation()
      Disable caller calculation for this record.
      ExtLogRecord.FormatStyle getFormatStyle()
      Get the format style for the record.
      java.lang.String getFormattedMessage()
      Get the fully formatted log record, with resources resolved and parameters applied.
      java.lang.String getHostName()
      Get the host name of the record, if known.
      java.lang.String getLoggerClassName()
      Get the class name of the logger which created this record.
      java.lang.String getMdc​(java.lang.String key)
      Get the value of an MDC property.
      java.util.Map<java.lang.String,​java.lang.String> getMdcCopy()
      Get a copy of all the MDC properties for this log record.
      java.lang.String getNdc()
      Get the NDC for this log record.
      long getProcessId()
      Get the process ID of the record, if known.
      java.lang.String getProcessName()
      Get the process name of the record, if known.
      java.lang.String getResourceKey()
      Get the resource key, if any.
      java.lang.String getSourceClassName()
      java.lang.String getSourceFileName()
      Get the source file name for this log record.
      int getSourceLineNumber()
      Get the source line number for this log record.
      java.lang.String getSourceMethodName()
      java.lang.String getSourceModuleName()
      Get the name of the module that initiated the logging request, if known.
      java.lang.String getSourceModuleVersion()
      Get the version of the module that initiated the logging request, if known.
      java.lang.String getThreadName()
      Get the thread name of this logging event.
      java.lang.String putMdc​(java.lang.String key, java.lang.String value)
      Change an MDC value on this record.
      java.lang.String removeMdc​(java.lang.String key)
      Remove an MDC value on this record.
      void setHostName​(java.lang.String hostName)
      Set the host name of the record.
      void setMdc​(java.util.Map<?,​?> sourceMap)
      Create a new MDC using a copy of the source map.
      void setMessage​(java.lang.String message)
      Set the raw message.
      void setMessage​(java.lang.String message, ExtLogRecord.FormatStyle formatStyle)
      Set the raw message.
      void setNdc​(java.lang.String value)
      Change the NDC for this log record.
      void setParameters​(java.lang.Object[] parameters)
      Set the parameters to the log message.
      void setProcessId​(long processId)
      Set the process ID of the record.
      void setProcessName​(java.lang.String processName)
      Set the process name of the record.
      void setResourceBundle​(java.util.ResourceBundle bundle)
      Set the localization resource bundle.
      void setResourceBundleName​(java.lang.String name)
      Set the localization resource bundle name.
      void setSourceClassName​(java.lang.String sourceClassName)
      void setSourceFileName​(java.lang.String sourceFileName)
      Set the source file name for this log record.
      void setSourceLineNumber​(int sourceLineNumber)
      Set the source line number for this log record.
      void setSourceMethodName​(java.lang.String sourceMethodName)
      void setSourceModuleName​(java.lang.String sourceModuleName)
      Set the source module name of this record.
      void setSourceModuleVersion​(java.lang.String sourceModuleVersion)
      Set the source module version of this record.
      void setThreadName​(java.lang.String threadName)
      Set the thread name of this logging event.
      static ExtLogRecord wrap​(java.util.logging.LogRecord rec)
      Wrap a JDK log record.
      • Methods inherited from class java.util.logging.LogRecord

        getInstant, getLevel, getLoggerName, getMessage, getMillis, getParameters, getResourceBundle, getResourceBundleName, getSequenceNumber, getThreadID, getThrown, setInstant, setLevel, setLoggerName, setMillis, setSequenceNumber, setThreadID, setThrown
      • Methods inherited from class java.lang.Object

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

      • ExtLogRecord

        public ExtLogRecord​(java.util.logging.Level level,
                            java.lang.String msg,
                            java.lang.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​(java.util.logging.Level level,
                            java.lang.String msg,
                            ExtLogRecord.FormatStyle formatStyle,
                            java.lang.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 Detail

      • wrap

        public static ExtLogRecord wrap​(java.util.logging.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
      • 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 java.lang.String getMdc​(java.lang.String key)
        Get the value of an MDC property.
        Parameters:
        key - the property key
        Returns:
        the property value
      • getMdcCopy

        public java.util.Map<java.lang.String,​java.lang.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 java.lang.String putMdc​(java.lang.String key,
                                       java.lang.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 java.lang.String removeMdc​(java.lang.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​(java.util.Map<?,​?> sourceMap)
        Create a new MDC using a copy of the source map.
        Parameters:
        sourceMap - the source man, must not be null
      • getNdc

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

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

        public java.lang.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
      • 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 java.lang.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​(java.lang.String sourceFileName)
        Set the source file name for this log record.
        Parameters:
        sourceFileName - the source file name
      • getSourceClassName

        public java.lang.String getSourceClassName()
        Overrides:
        getSourceClassName in class java.util.logging.LogRecord
      • setSourceClassName

        public void setSourceClassName​(java.lang.String sourceClassName)
        Overrides:
        setSourceClassName in class java.util.logging.LogRecord
      • getSourceMethodName

        public java.lang.String getSourceMethodName()
        Overrides:
        getSourceMethodName in class java.util.logging.LogRecord
      • setSourceMethodName

        public void setSourceMethodName​(java.lang.String sourceMethodName)
        Overrides:
        setSourceMethodName in class java.util.logging.LogRecord
      • getSourceModuleName

        public java.lang.String getSourceModuleName()
        Get the name of the module that initiated the logging request, if known.
        Returns:
        the name of the module that initiated the logging request
      • setSourceModuleName

        public void setSourceModuleName​(java.lang.String sourceModuleName)
        Set the source module name of this record.
        Parameters:
        sourceModuleName - the source module name
      • getSourceModuleVersion

        public java.lang.String getSourceModuleVersion()
        Get the version of the module that initiated the logging request, if known.
        Returns:
        the version of the module that initiated the logging request
      • setSourceModuleVersion

        public void setSourceModuleVersion​(java.lang.String sourceModuleVersion)
        Set the source module version of this record.
        Parameters:
        sourceModuleVersion - the source module version
      • getFormattedMessage

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

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

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

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

        public java.lang.String getHostName()
        Get the host name of the record, if known.
        Returns:
        the host name of the record, if known
      • setHostName

        public void setHostName​(java.lang.String hostName)
        Set the host name of the record.
        Parameters:
        hostName - the host name of the record
      • getProcessName

        public java.lang.String getProcessName()
        Get the process name of the record, if known.
        Returns:
        the process name of the record, if known
      • setProcessName

        public void setProcessName​(java.lang.String processName)
        Set the process name of the record.
        Parameters:
        processName - the process name of the record
      • getProcessId

        public long getProcessId()
        Get the process ID of the record, if known.
        Returns:
        the process ID of the record, or -1 if not known
      • setProcessId

        public void setProcessId​(long processId)
        Set the process ID of the record.
        Parameters:
        processId - the process ID of the record
      • setMessage

        public void setMessage​(java.lang.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 java.util.logging.LogRecord
        Parameters:
        message - the new raw message
      • setMessage

        public void setMessage​(java.lang.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​(java.lang.Object[] parameters)
        Set the parameters to the log message. Any cached formatted message is discarded.
        Overrides:
        setParameters in class java.util.logging.LogRecord
        Parameters:
        parameters - the log message parameters. (may be null)
      • setResourceBundle

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

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