Skip to content

"audit-log" RollingFile Appender

This appender manages audit logs with automatic file rotation.

Example Configuration :

xml
<RollingFile name="audit-log" fileName="logs/audit.log" filePattern="logs/audit-%d{yyyy-MM-dd}.log">
    <ThresholdFilter level="INFO"/>
    <PatternLayout pattern="%d %-5p [%t][%X{MDC_USER}][%X{MDC_REMOTE_IP}][%X{MDC_COMPONENT}] - %m%n"/>
    <Policies>
        <SizeBasedTriggeringPolicy size="100KB"/>
    </Policies>
    <DefaultRolloverStrategy max="10"/>
</RollingFile>

Example Log :

text
2025-02-05 17:15:00,006 INFO  [scheduler-worker-3][Business Partners\admin][[0:0:0:0:0:0:0:1]][sfiler-gui] - Original time: 2025-02-05T17:14:55.000-0500: The 'Run a generic Groovy script' extension has been added.

Log details:

  1. 2025-02-05 17:15:00,006 : Date and time of the log
  2. INFO : Log level
  3. [scheduler-worker-3] : Thread name
  4. [Business Partners\admin] : Username (from MDC)
  5. [[0:0:0:0:0:0:0:1]] : Remote IP address (from MDC)
  6. [sfiler-gui] : System component concerned (from MDC)
  7. - Original time: 2025-02-05T17:14:55.000-0500: The 'Run a generic Groovy script' extension has been added. : Log message

Basic Configuration

  • Name: audit-log
  • Output file: logs/audit.log
  • Archive file pattern: logs/audit-[DATE].log

Log Format

The pattern %d %-5p [%t][%X{MDC_USER}][%X{MDC_REMOTE_IP}][%X{MDC_COMPONENT}] - %m%n defines the following format:

  • %d : Log date and time
  • %-5p : Log level (DEBUG, INFO, ERROR...) aligned to 5 characters
  • [%t] : Thread name
  • [%X{MDC_USER}] : Username (from MDC)
  • [%X{MDC_REMOTE_IP}] : Remote IP address (from MDC)
  • [%X{MDC_COMPONENT}] : System component concerned (from MDC)
  • %m : Log message
  • %n : Line break

Rotation Policy

  • SizeBasedTriggeringPolicy: 100KB per file
  • DefaultRolloverStrategy: Maximum 10 archive files
  • Rotation creates a new file when:
    • Current file reaches 100KB
    • A new day begins (based on date pattern)

Filter

  • ThresholdFilter: Minimum level INFO
  • Only messages of level INFO or higher (WARN, ERROR, FATAL) will be recorded
  • DEBUG level messages will be ignored

References