Micronaut logging support
Find a file
2021-12-16 13:49:08 +01:00
.github/workflows Minor fixes. Update github actions. 2021-10-31 19:56:26 +01:00
src Minor fixes. Update github actions. 2021-10-31 19:56:26 +01:00
.markdownlint.yaml Add linter. 2021-10-28 13:00:10 +02:00
.yamllint Add linter. 2021-10-28 13:00:10 +02:00
LICENSE Initial commit 2020-08-05 21:40:49 +02:00
lombok.config Minor fixes. Update github actions. 2021-10-31 19:56:26 +01:00
pom.xml [maven-release-plugin] prepare for next development iteration 2021-12-16 13:49:08 +01:00
README.md Add link for v3 version. 2021-10-31 19:57:13 +01:00

Micronaut Logging support

This branch is for Micronaut 2.x, for 3.x see wip branch 3.x.

Features

Default logback.xml

If no logback.xml by user is provided a default logback.xml is loaded. Otherwise use custom logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="false">
 <include resource="io/kokuwa/logback/base.xml" />
 <logger name="io.micronaut.logging.PropertiesLoggingLevelsConfigurer" levels="WARN" />
 <root level="INFO">
  <appender-ref ref="${LOGBACK_APPENDER:-CONSOLE}" />
 </root>
</configuration>

Available Appender

  • console with jansi for developers
  • gcp logging format (with support for error reporting)
  • json

AutoSelect appender logback.xml

  1. if LOGBACK_APPENDER is set this appender will be used
  2. if GCP is detected gcp appender will be used
  3. if Kubernetes is detected json appender will be used
  4. console appender else

IMPORTENT: only works without custom logback.xml

Set log level based on MDC values

Configuration:

  • enabled: enable MDC filter (true is default)
  • key: MDC key, is optional (will use name instead, see example user below)
  • level: log level to use (TRACE is default)
  • loggers: passlist of logger names, matches all loggers if empty
  • values: values for matching MDC key, matches all values if empty

Example for setting different values for different values/logger:

logger:
  levels:
    io.kokuwa: INFO
  mdc:
    gateway-debug:
      key: gateway
      level: DEBUG
      loggers:
        - io.kokuwa
      values:
        - 6a1bae7f-eb6c-4c81-af9d-dc15396584e2
        - fb3318f1-2c73-48e9-acd4-a2be3c9f9256
    gateway-trace:
      key: gateway
      level: TRACE
      loggers:
        - io.kokuwa
        - io.micronaut
      values:
        - 257802b2-22fe-4dcc-bb99-c1db2a47861f

Example for omiting level and key:

logger:
  levels:
    io.kokuwa: INFO
  mdc:
    gateway:
      loggers:
        - io.kokuwa
      values:
        - 257802b2-22fe-4dcc-bb99-c1db2a47861f
        - 0a44738b-0c3a-4798-8210-2495485f10b2

Example for minimal configuration:

logger:
  levels:
    io.kokuwa: INFO
  mdc:
    user: {}

Set log level based on HTTP request header

Configuration for server filter (prefixed with logger.request.filter):

  • enabled: enable HTTP server filter (true is default)
  • order: order for Ordered (highest is default)
  • path: filter path (/** is default)
  • header: name of HTTP header (x-log-level is default)

Configuration for client filter for propagation (prefixed with logger.request.propagation):

  • enabled: enable HTTP client filter (true is default)
  • order: order for Ordered (tracing is default)
  • path: filter path (/** is default)
  • header: name of HTTP header (server header is default)

Example with default configuration:

logger:
  request:
    filter:
      enabled: true
      order: -2147483648
      path: /**
      header: x-log-level
    propagation:
      enabled: true
      order: 19000
      path: /**
      header: ${logger.request.header.header-name}

Add principal for request to MDC

Configuration:

  • enabled: enable HTTP principal filter (true is default)
  • order: order for Ordered (ServerFilterPhase.SECURITY.after() is default)
  • path: filter path (/** is default)
  • key: name of MDC header (principal is default)

Example with default configuration:

logger:
  request:
    principal:
      enabled: true
      order: 39250
      path: /**
      key: principal

Build & Release

Dependency updates

Display dependency updates:

mvn versions:display-property-updates -U

Update dependencies:

mvn versions:update-properties

Release locally

Run:

mvn release:prepare release:perform release:clean -B -DreleaseProfiles=oss-release

Open Topics

  • configure mdc on refresh event
  • read serviceName and serviceVersion from yaml
  • support auto select appender with custom logback.xml