micronaut-logging/README.md
2021-10-28 13:00:10 +02:00

153 lines
3.7 KiB
Markdown

# Micronaut Logging support
## Features
### Available Appender
* console format
* Stackdriver format (with support for error reporting)
### 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:
```yaml
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:
```yaml
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:
```yaml
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](https://github.com/micronaut-projects/micronaut-core/blob/master/core/src/main/java/io/micronaut/core/order/Ordered.java) (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](https://github.com/micronaut-projects/micronaut-core/blob/master/core/src/main/java/io/micronaut/core/order/Ordered.java) (tracing is default)
* *path*: filter path (`/**` is default)
* *header*: name of HTTP header (server header is default)
Example with default configuration:
```yaml
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](https://github.com/micronaut-projects/micronaut-core/blob/master/core/src/main/java/io/micronaut/core/order/Ordered.java) ([ServerFilterPhase.SECURITY.after()](https://github.com/micronaut-projects/micronaut-core/blob/v2.0.1/http/src/main/java/io/micronaut/http/filter/ServerFilterPhase.java#L54) is default)
* *path*: filter path (`/**` is default)
* *key*: name of MDC header (`principal` is default)
Example with default configuration:
```yaml
logger:
request:
principal:
enabled: true
order: 39250
path: /**
key: principal
```
## Build & Release
### Dependency updates
Display dependency updates:
```sh
mvn versions:display-property-updates -U
```
Update dependencies:
```sh
mvn versions:update-properties
```
### Release locally
Run:
```sh
mvn release:prepare release:perform release:clean -B -DreleaseProfiles=oss-release
```
## Open Topics
* configure mdc on refresh event
* add stackdriver per configuration
* add fluent per configuration
* read **serviceName** and **serviceVersion** from yaml