Add config options to add authentication attributes as mdc.

This commit is contained in:
Stephan Schnabel 2021-12-01 10:25:11 +01:00
parent a350698f52
commit 7ad1ee0add
Signed by: stephan.schnabel
GPG key ID: F74FE2422AA07290
32 changed files with 964 additions and 541 deletions

View file

@ -0,0 +1,35 @@
# Set log level based on HTTP request header
With this features it is possible to set the log level while processing a request by adding the http header `x-log-level` with value `TRACE`. This log level is propagated to HTTP client requests.
## Properties
Property | Description | Default
-------- | ----------- | -------
`logger.http.level.enabled` | filter enabled? | `true`
`logger.http.level.path` | filter path | `/**`
`logger.http.level.order` | order for [Ordered](https://github.com/micronaut-projects/micronaut-core/blob/v3.2.0/core/src/main/java/io/micronaut/core/order/Ordered.java) | [ServerFilterPhase.FIRST.before()](https://github.com/micronaut-projects/micronaut-core/blob/v3.2.0/http/src/main/java/io/micronaut/http/filter/ServerFilterPhase.java#L34)
`logger.http.level.header` | name of HTTP header | `x-log-level`
`logger.http.level.propagation.enabled` | propagation enabled? | `true`
`logger.http.level.propagation.path` | propagation path | `/**`
`logger.http.level.propagation.order` | order for [Ordered](https://github.com/micronaut-projects/micronaut-core/blob/v3.2.0/core/src/main/java/io/micronaut/core/order/Ordered.java) | [Order.HIGHEST_PRECEDENCE](https://github.com/micronaut-projects/micronaut-core/blob/v3.2.0/core/src/main/java/io/micronaut/core/order/Ordered.java#L30)
`logger.http.level.propagation.header` | name of HTTP header | see `logger.http.level.header`
## Examples
Default configuration:
```yaml
logger:
http:
level:
enabled: true
order: -1000
path: /**
header: x-log-level
propagation:
enabled: true
order: 2147483648
path: /**
header: ${logger.http.level.header}
```

View file

@ -0,0 +1,29 @@
# Add authentication information to MDC
This only applies to HTTP requests with successful security authentication.
## Properties
Property | Description | Default
-------- | ----------- | -------
`logger.http.authentication.enabled` | filter enabled? | `true`
`logger.http.authentication.path` | filter path | `/**`
`logger.http.authentication.order` | order for [Ordered](https://github.com/micronaut-projects/micronaut-core/blob/v3.2.0/core/src/main/java/io/micronaut/core/order/Ordered.java) | [ServerFilterPhase.SECURITY.after()](https://github.com/micronaut-projects/micronaut-core/blob/v3.2.0/http/src/main/java/io/micronaut/http/filter/ServerFilterPhase.java#L54)
`logger.http.authentication.prefix` | prefix to MDC key | ``
`logger.http.authentication.name` | MDC key of authentication name | `principal`
`logger.http.authentication.attributes` | authentication attributes to add to MDC, | `[]`
## Examples
Configuration for adding some jwt claims:
```yaml
logger:
http:
authentication:
prefix: jwt.
name: sub
attributes:
- aud
- azp
```

View file

@ -0,0 +1,28 @@
# Add HTTP headers to MDC
## Properties
Property | Description | Default
-------- | ----------- | -------
`logger.http.headers.enabled` | filter enabled? | `true`
`logger.http.headers.path` | filter path | `/**`
`logger.http.headers.order` | order for [Ordered](https://github.com/micronaut-projects/micronaut-core/blob/v3.2.0/core/src/main/java/io/micronaut/core/order/Ordered.java) | [ServerFilterPhase.FIRST.before()](https://github.com/micronaut-projects/micronaut-core/blob/v3.2.0/http/src/main/java/io/micronaut/http/filter/ServerFilterPhase.java#L34)
`logger.http.headers.prefix` | prefix to MDC key | ``
`logger.http.headers.names` | http header names to add to MDC | `[]`
## Examples
Configuration for b3-propagation:
```yaml
logger:
http:
headers:
prefix: header.
names:
- x-request-id
- x-b3-traceId
- x-b3-parentspanid
- x-b3-spanid
- x-b3-sampled
```

View file

@ -0,0 +1,16 @@
# Appender
## Available Appender
* console with jansi for developers
* gcp logging format (with support for error reporting)
* json
## AutoSelect appender
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`

View file

@ -0,0 +1,18 @@
# Add default logback.xml
If no `logback.xml` by user is provided a default [logback.xml](../../src/main/resources/io/kokuwa/logback/logback-default.xml) is loaded. Otherwise use custom [logback.xml](../../src/main/resources/io/kokuwa/logback/logback-example.xml):
```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>
```

View file

@ -0,0 +1,66 @@
# Set log level based on MDC values
This can be used to change the log level based on MDC valus. E.g. change log levels for specific users/services etc.
## Properties
Property | Description | Default
-------- | ----------- | -------
`logger.mdc.enabled` | MDC enabled? | `true`
`logger.mdc.<key>` | MDC key to use |
`logger.mdc.<key>.key` | MDC key override, see complex example below for usage | `<key>`
`logger.mdc.<key>.level` | log level to use | `TRACE`
`logger.mdc.<key>.loggers` | passlist of logger names, matches all loggers if empty | `[]`
`logger.mdc.<key>.values` | values for matching MDC key, matches all values if empty | `[]`
## Examples
Minimal configuration that logs everything with `TRACE` if MDC `principal` is present:
```yaml
logger:
levels:
io.kokuwa: INFO
mdc:
principal: {}
```
Configuration that logs everything with `TRACE` for logger `io.kokuwa` if MDC `gateway` matches one value:
```yaml
logger:
levels:
io.kokuwa: INFO
mdc:
gateway:
loggers:
- io.kokuwa
values:
- 257802b2-22fe-4dcc-bb99-c1db2a47861f
- 0a44738b-0c3a-4798-8210-2495485f10b2
```
Complex example with 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
```