From 50fe4a86b80503292e5ed514bdc6548e654a5a8b Mon Sep 17 00:00:00 2001 From: Stephan Schnabel Date: Fri, 27 Jun 2025 14:22:44 +0200 Subject: [PATCH] chore: migrated repository from `github.com` to `git.kokuwa.io` --- .github/CODEOWNERS | 4 - .github/README.md | 11 + .github/dependabot.yml | 25 -- .github/settings.xml | 16 - .github/workflows/build.yaml | 31 -- .github/workflows/dependabot.yaml | 17 - .github/workflows/pr.yaml | 41 -- .github/workflows/release.yaml | 39 -- .justfile | 12 + .woodpecker/deploy.yaml | 16 + .woodpecker/lint.yaml | 21 + .woodpecker/maven/settings.xml | 23 + .woodpecker/release.yaml | 29 ++ .woodpecker/verify.yaml | 9 + .yamllint => .yamllint.yaml | 4 - LICENSE | 425 +++++++++++------- README.md | 10 +- docs/features/logback_mdc_level.md | 2 +- pom.xml | 381 +++++++++++++--- renovate.json | 4 + src/eclipse/formatter.xml | 404 +++++++++++++++++ src/it/invoker.properties | 3 + src/it/pom.xml | 81 +--- .../kokuwa/micronaut/logging/LogbackUtil.java | 3 +- .../http/level/LogLevelServerFilter.java | 5 +- .../logging/mdc/MDCTurboFilterConfigurer.java | 2 +- .../logging/http/AbstractFilterTest.java | 6 +- 27 files changed, 1145 insertions(+), 479 deletions(-) delete mode 100644 .github/CODEOWNERS create mode 100644 .github/README.md delete mode 100644 .github/dependabot.yml delete mode 100644 .github/settings.xml delete mode 100644 .github/workflows/build.yaml delete mode 100644 .github/workflows/dependabot.yaml delete mode 100644 .github/workflows/pr.yaml delete mode 100644 .github/workflows/release.yaml create mode 100644 .justfile create mode 100644 .woodpecker/deploy.yaml create mode 100644 .woodpecker/lint.yaml create mode 100644 .woodpecker/maven/settings.xml create mode 100644 .woodpecker/release.yaml create mode 100644 .woodpecker/verify.yaml rename .yamllint => .yamllint.yaml (83%) create mode 100644 renovate.json create mode 100644 src/eclipse/formatter.xml create mode 100644 src/it/invoker.properties diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 6e53241..0000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,4 +0,0 @@ -# https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax -* @sschnabe @rpahli @fabian-schlegel @wistefan -.github/workflows/* @kokuwaio-bot @sschnabe @rpahli @fabian-schlegel @wistefan -pom.xml @kokuwaio-bot @sschnabe @rpahli @fabian-schlegel @wistefan diff --git a/.github/README.md b/.github/README.md new file mode 100644 index 0000000..f74f3b7 --- /dev/null +++ b/.github/README.md @@ -0,0 +1,11 @@ +# Micronaut Logging support + +Enhanced logging for Micronaut using MDC or request header. + +[![Maven Central](https://img.shields.io/maven-central/v/io.kokuwa.micronaut/micronaut-logging.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/io.kokuwa.micronaut/micronaut-logging) +[![license](https://img.shields.io/badge/License-EUPL%201.2-blue)](https://git.kokuwa.io/kokuwaio/micronaut-logging/src/branch/main/LICENSE) +[![prs](https://img.shields.io/gitea/pull-requests/open/kokuwaio/micronaut-logging?gitea_url=https%3A%2F%2Fgit.kokuwa.io)](https://git.kokuwa.io/kokuwaio/micronaut-logging/pulls) +[![issues](https://img.shields.io/gitea/issues/open/kokuwaio/micronaut-logging?gitea_url=https%3A%2F%2Fgit.kokuwa.io)](https://git.kokuwa.io/kokuwaio/micronaut-logging/issues) +[![build](https://ci.kokuwa.io/api/badges/kokuwaio/micronaut-logging/status.svg)](https://ci.kokuwa.io/repos/kokuwaio/micronaut-logging/) + +For more documention see: [git.kokuwa.io/kokuwaio/micronaut-logging](https://git.kokuwa.io/kokuwaio/micronaut-logging) diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 4004022..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,25 +0,0 @@ -version: 2 -updates: - - package-ecosystem: maven - directory: / - schedule: - interval: daily - - package-ecosystem: github-actions - directory: / - schedule: - interval: monthly - day: monday - - package-ecosystem: maven - directory: / - target-branch: 3.x - schedule: - interval: daily - ignore: - - dependency-name: io.micronaut:* - update-types: [version-update:semver-major] - - package-ecosystem: github-actions - directory: / - target-branch: 3.x - schedule: - interval: monthly - day: monday diff --git a/.github/settings.xml b/.github/settings.xml deleted file mode 100644 index 44fd9ea..0000000 --- a/.github/settings.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - sonatype-nexus - ${env.SERVER_USERNAME} - ${env.SERVER_PASSWORD} - - - github.com - nope - ${env.GIT_ACTION_TOKEN} - - - diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml deleted file mode 100644 index 1c82019..0000000 --- a/.github/workflows/build.yaml +++ /dev/null @@ -1,31 +0,0 @@ -name: Build - -on: - push: - branches: [main, "*.x"] - -jobs: - - build: - runs-on: ubuntu-latest - env: - MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress --settings=${{ github.workspace }}/.github/settings.xml - steps: - - run: git config --global user.name "${{ vars.KOKUWA_IO_BOT_NAME }}" - - run: git config --global user.email "${{ vars.KOKUWA_IO_BOT_EMAIL }}" - - uses: actions/checkout@v4 - with: - token: ${{ secrets.GIT_ACTION_TOKEN }} - - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: 17 - cache: maven - - run: mvn $MAVEN_ARGS dependency:go-offline - - run: mvn $MAVEN_ARGS deploy - env: - SERVER_USERNAME: ${{ secrets.SONATYPE_NEXUS_USERNAME }} - SERVER_PASSWORD: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} - - run: mvn $MAVEN_ARGS site-deploy - env: - GIT_ACTION_TOKEN: ${{ secrets.GIT_ACTION_TOKEN }} diff --git a/.github/workflows/dependabot.yaml b/.github/workflows/dependabot.yaml deleted file mode 100644 index ed63eca..0000000 --- a/.github/workflows/dependabot.yaml +++ /dev/null @@ -1,17 +0,0 @@ -name: Dependabot - -on: pull_request_target - -jobs: - auto-merge: - runs-on: ubuntu-latest - if: ${{ github.actor == 'dependabot[bot]' }} - steps: - - run: gh pr review --approve "$PR_URL" - env: - PR_URL: ${{ github.event.pull_request.html_url }} - GITHUB_TOKEN: ${{ secrets.GIT_ACTION_TOKEN }} - - run: gh pr merge --auto --squash "$PR_URL" - env: - PR_URL: ${{ github.event.pull_request.html_url }} - GITHUB_TOKEN: ${{ secrets.GIT_ACTION_TOKEN }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml deleted file mode 100644 index b8527ba..0000000 --- a/.github/workflows/pr.yaml +++ /dev/null @@ -1,41 +0,0 @@ -name: PullRequest - -on: pull_request - -jobs: - - yaml: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ibiqlik/action-yamllint@v3 - with: - format: colored - strict: true - - markdown: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: avto-dev/markdown-lint@v1 - with: - args: /github/workspace - - build: - runs-on: ubuntu-latest - env: - MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress -Dmaven.test.redirectTestOutputToFile=false - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: 17 - cache: maven - - run: mvn $MAVEN_ARGS dependency:go-offline - - run: mvn $MAVEN_ARGS verify - - run: mvn $MAVEN_ARGS site - - uses: actions/upload-artifact@v4 - if: always() - with: - path: target/site diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml deleted file mode 100644 index 0e5bda9..0000000 --- a/.github/workflows/release.yaml +++ /dev/null @@ -1,39 +0,0 @@ -name: Release - -on: workflow_dispatch - -jobs: - build: - runs-on: ubuntu-latest - env: - MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress --settings=.github/settings.xml - steps: - - run: git config --global user.name "${{ vars.KOKUWA_IO_BOT_NAME }}" - - run: git config --global user.email "${{ vars.KOKUWA_IO_BOT_EMAIL }}" - - uses: actions/checkout@v4 - with: - token: ${{ secrets.GIT_ACTION_TOKEN }} - - uses: crazy-max/ghaction-import-gpg@v6 - with: - gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} - passphrase: ${{ secrets.GPG_PASSPHRASE }} - git_user_signingkey: true - git_commit_gpgsign: true - - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: 17 - cache: maven - server-id: sonatype-nexus - server-username: SERVER_USERNAME - server-password: SERVER_PASSWORD - gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} - gpg-passphrase: GPG_PASSPHRASE - - run: mvn $MAVEN_ARGS dependency:go-offline - - run: mvn $MAVEN_ARGS release:prepare -Darguments="$MAVEN_ARGS" - - run: mvn $MAVEN_ARGS release:perform -Darguments="$MAVEN_ARGS" - env: - SERVER_USERNAME: ${{ secrets.SONATYPE_NEXUS_USERNAME }} - SERVER_PASSWORD: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} - GIT_ACTION_TOKEN: ${{ secrets.GIT_ACTION_TOKEN }} - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} diff --git a/.justfile b/.justfile new file mode 100644 index 0000000..81f407b --- /dev/null +++ b/.justfile @@ -0,0 +1,12 @@ +# https://just.systems/man/en/ + +[private] +@default: + just --list --unsorted + +# Run linter. +@lint: + docker run --rm --read-only --volume=$(pwd):$(pwd):ro --workdir=$(pwd) kokuwaio/yamllint + docker run --rm --read-only --volume=$(pwd):$(pwd):rw --workdir=$(pwd) kokuwaio/markdownlint --fix + docker run --rm --read-only --volume=$(pwd):$(pwd):ro --workdir=$(pwd) kokuwaio/renovate-config-validator + docker run --rm --read-only --volume=$(pwd):$(pwd):ro --workdir=$(pwd) woodpeckerci/woodpecker-cli lint diff --git a/.woodpecker/deploy.yaml b/.woodpecker/deploy.yaml new file mode 100644 index 0000000..11f903e --- /dev/null +++ b/.woodpecker/deploy.yaml @@ -0,0 +1,16 @@ +when: + instance: ci.kokuwa.io + repo: kokuwaio/micronaut-logging + event: [manual, push] + branch: main + path: [.woodpecker/deploy.yaml, pom.xml, src/main/**] + +steps: + + maven: + image: maven:3.9.10-eclipse-temurin-17 + commands: mvn deploy --settings=.woodpecker/maven/settings.xml + environment: + MAVEN_GPG_KEY: {from_secret: woodpecker_gpg_key} + SONATYPE_ORG_USERNAME: {from_secret: sonatype_org_username} + SONATYPE_ORG_PASSWORD: {from_secret: sonatype_org_password} diff --git a/.woodpecker/lint.yaml b/.woodpecker/lint.yaml new file mode 100644 index 0000000..74bb114 --- /dev/null +++ b/.woodpecker/lint.yaml @@ -0,0 +1,21 @@ +when: + event: [manual, pull_request, push] + branch: main + path: [.woodpecker/lint.yaml, renovate.json, "**/*.y*ml", "**/*.md"] + +steps: + + renovate: + image: kokuwaio/renovate-config-validator + depends_on: [] + when: [path: [.woodpecker/lint.yaml, renovate.json]] + + yaml: + image: kokuwaio/yamllint + depends_on: [] + when: [path: [.woodpecker/lint.yaml, .yamllint.yaml, "**/*.y*ml"]] + + markdown: + image: kokuwaio/markdownlint + depends_on: [] + when: [path: [.woodpecker/lint.yaml, .markdownlint.yaml, "**/*.md"]] diff --git a/.woodpecker/maven/settings.xml b/.woodpecker/maven/settings.xml new file mode 100644 index 0000000..57ad1cb --- /dev/null +++ b/.woodpecker/maven/settings.xml @@ -0,0 +1,23 @@ + + + false + /woodpecker/.m2 + + + git.kokuwa.io + ${env.FORGEJO_USERNAME} + ${env.FORGEJO_PASSWORD} + + + sonatype.org + ${env.SONATYPE_ORG_USERNAME} + ${env.SONATYPE_ORG_PASSWORD} + + + + + http://mirror.woodpecker.svc.cluster.local/maven2 + central + + + diff --git a/.woodpecker/release.yaml b/.woodpecker/release.yaml new file mode 100644 index 0000000..21a190e --- /dev/null +++ b/.woodpecker/release.yaml @@ -0,0 +1,29 @@ +when: + instance: ci.kokuwa.io + repo: kokuwaio/micronaut-logging + event: deployment + branch: main + +steps: + + maven: + image: maven:3.9.10-eclipse-temurin-17 + commands: + # setup git with ssk key signing + - git config user.email "$GIT_USER_EMAIL" + - git config user.name "$GIT_USER_NAME" + - git config commit.gpgsign true + - git config gpg.format ssh + - git config user.signingkey /run/secrets/sign.pub + - install -m 400 /dev/null /run/secrets/sign && echo "$GIT_SIGN_KEY" > /run/secrets/sign + - install -m 444 /dev/null /run/secrets/sign.pub && echo "$GIT_SIGN_PUB" > /run/secrets/sign.pub + # release + - mvn release:prepare release:perform --settings=.woodpecker/maven/settings.xml + environment: + MAVEN_GPG_KEY: {from_secret: woodpecker_gpg_key} + GIT_SIGN_KEY: {from_secret: woodpecker_sign_key} + GIT_SIGN_PUB: {from_secret: woodpecker_sign_pub} + FORGEJO_USERNAME: {from_secret: woodpecker_username} + FORGEJO_PASSWORD: {from_secret: woodpecker_password} + SONATYPE_ORG_USERNAME: {from_secret: sonatype_org_username} + SONATYPE_ORG_PASSWORD: {from_secret: sonatype_org_password} diff --git a/.woodpecker/verify.yaml b/.woodpecker/verify.yaml new file mode 100644 index 0000000..c947ea8 --- /dev/null +++ b/.woodpecker/verify.yaml @@ -0,0 +1,9 @@ +when: + event: [manual, pull_request] + path: [.woodpecker/verify.yaml, pom.xml, src/**] + +steps: + + test: + image: maven:3.9.10-eclipse-temurin-17 + commands: mvn verify --settings=.woodpecker/maven/settings.xml diff --git a/.yamllint b/.yamllint.yaml similarity index 83% rename from .yamllint rename to .yamllint.yaml index 8011808..21966f2 100644 --- a/.yamllint +++ b/.yamllint.yaml @@ -13,7 +13,3 @@ rules: quoted-strings: quote-type: double required: only-when-needed - - # allow everything on keys - truthy: - check-keys: false diff --git a/LICENSE b/LICENSE index 261eeb9..dacd3ae 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,288 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + EUROPEAN UNION PUBLIC LICENCE v. 1.2 + EUPL © the European Union 2007, 2016 - 1. Definitions. +This European Union Public Licence (the ‘EUPL’) applies to the Work (as defined +below) which is provided under the terms of this Licence. Any use of the Work, +other than as authorised under this Licence is prohibited (to the extent such +use is covered by a right of the copyright holder of the Work). - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +The Work is provided under the terms of this Licence when the Licensor (as +defined below) has placed the following notice immediately following the +copyright notice for the Work: - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. + Licensed under the EUPL - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. +or has expressed by any other means his willingness to license under the EUPL. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. +1. Definitions - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. +In this Licence, the following terms have the following meaning: - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. +- ‘The Licence’: this Licence. - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). +- ‘The Original Work’: the work or software distributed or communicated by the + Licensor under this Licence, available as Source Code and also as Executable + Code as the case may be. - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. +- ‘Derivative Works’: the works or software that could be created by the + Licensee, based upon the Original Work or modifications thereof. This Licence + does not define the extent of modification or dependence on the Original Work + required in order to classify a work as a Derivative Work; this extent is + determined by copyright law applicable in the country mentioned in Article 15. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." +- ‘The Work’: the Original Work or its Derivative Works. - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. +- ‘The Source Code’: the human-readable form of the Work which is the most + convenient for people to study and modify. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +- ‘The Executable Code’: any code which has generally been compiled and which is + meant to be interpreted by a computer as a program. - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. +- ‘The Licensor’: the natural or legal person that distributes or communicates + the Work under the Licence. - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +- ‘Contributor(s)’: any natural or legal person who modifies the Work under the + Licence, or otherwise contributes to the creation of a Derivative Work. - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and +- ‘The Licensee’ or ‘You’: any natural or legal person who makes any usage of + the Work under the terms of the Licence. - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and +- ‘Distribution’ or ‘Communication’: any act of selling, giving, lending, + renting, distributing, communicating, transmitting, or otherwise making + available, online or offline, copies of the Work or providing access to its + essential functionalities at the disposal of any other natural or legal + person. - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and +2. Scope of the rights granted by the Licence - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. +The Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +sublicensable licence to do the following, for the duration of copyright vested +in the Original Work: - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. +- use the Work in any circumstance and for all usage, +- reproduce the Work, +- modify the Work, and make Derivative Works based upon the Work, +- communicate to the public, including the right to make available or display + the Work or copies thereof to the public and perform publicly, as the case may + be, the Work, +- distribute the Work or copies thereof, +- lend and rent the Work or copies thereof, +- sublicense rights in the Work or copies thereof. - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. +Those rights can be exercised on any media, supports and formats, whether now +known or later invented, as far as the applicable law permits so. - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. +In the countries where moral rights apply, the Licensor waives his right to +exercise his moral right to the extent allowed by law in order to make effective +the licence of the economic rights here above listed. - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. +The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to +any patents held by the Licensor, to the extent necessary to make use of the +rights granted on the Work under this Licence. - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. +3. Communication of the Source Code - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. +The Licensor may provide the Work either in its Source Code form, or as +Executable Code. If the Work is provided as Executable Code, the Licensor +provides in addition a machine-readable copy of the Source Code of the Work +along with each copy of the Work that the Licensor distributes or indicates, in +a notice following the copyright notice attached to the Work, a repository where +the Source Code is easily and freely accessible for as long as the Licensor +continues to distribute or communicate the Work. - END OF TERMS AND CONDITIONS +4. Limitations on copyright - APPENDIX: How to apply the Apache License to your work. +Nothing in this Licence is intended to deprive the Licensee of the benefits from +any exception or limitation to the exclusive rights of the rights owners in the +Work, of the exhaustion of those rights or of other applicable limitations +thereto. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +5. Obligations of the Licensee - Copyright [yyyy] [name of copyright owner] +The grant of the rights mentioned above is subject to some restrictions and +obligations imposed on the Licensee. Those obligations are the following: - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Attribution right: The Licensee shall keep intact all copyright, patent or +trademarks notices and all notices that refer to the Licence and to the +disclaimer of warranties. The Licensee must include a copy of such notices and a +copy of the Licence with every copy of the Work he/she distributes or +communicates. The Licensee must cause any Derivative Work to carry prominent +notices stating that the Work has been modified and the date of modification. - http://www.apache.org/licenses/LICENSE-2.0 +Copyleft clause: If the Licensee distributes or communicates copies of the +Original Works or Derivative Works, this Distribution or Communication will be +done under the terms of this Licence or of a later version of this Licence +unless the Original Work is expressly distributed only under this version of the +Licence — for example by communicating ‘EUPL v. 1.2 only’. The Licensee +(becoming Licensor) cannot offer or impose any additional terms or conditions on +the Work or Derivative Work that alter or restrict the terms of the Licence. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Compatibility clause: If the Licensee Distributes or Communicates Derivative +Works or copies thereof based upon both the Work and another work licensed under +a Compatible Licence, this Distribution or Communication can be done under the +terms of this Compatible Licence. For the sake of this clause, ‘Compatible +Licence’ refers to the licences listed in the appendix attached to this Licence. +Should the Licensee's obligations under the Compatible Licence conflict with +his/her obligations under this Licence, the obligations of the Compatible +Licence shall prevail. + +Provision of Source Code: When distributing or communicating copies of the Work, +the Licensee will provide a machine-readable copy of the Source Code or indicate +a repository where this Source will be easily and freely available for as long +as the Licensee continues to distribute or communicate the Work. + +Legal Protection: This Licence does not grant permission to use the trade names, +trademarks, service marks, or names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the copyright notice. + +6. Chain of Authorship + +The original Licensor warrants that the copyright in the Original Work granted +hereunder is owned by him/her or licensed to him/her and that he/she has the +power and authority to grant the Licence. + +Each Contributor warrants that the copyright in the modifications he/she brings +to the Work are owned by him/her or licensed to him/her and that he/she has the +power and authority to grant the Licence. + +Each time You accept the Licence, the original Licensor and subsequent +Contributors grant You a licence to their contributions to the Work, under the +terms of this Licence. + +7. Disclaimer of Warranty + +The Work is a work in progress, which is continuously improved by numerous +Contributors. It is not a finished work and may therefore contain defects or +‘bugs’ inherent to this type of development. + +For the above reason, the Work is provided under the Licence on an ‘as is’ basis +and without warranties of any kind concerning the Work, including without +limitation merchantability, fitness for a particular purpose, absence of defects +or errors, accuracy, non-infringement of intellectual property rights other than +copyright as stated in Article 6 of this Licence. + +This disclaimer of warranty is an essential part of the Licence and a condition +for the grant of any rights to the Work. + +8. Disclaimer of Liability + +Except in the cases of wilful misconduct or damages directly caused to natural +persons, the Licensor will in no event be liable for any direct or indirect, +material or moral, damages of any kind, arising out of the Licence or of the use +of the Work, including without limitation, damages for loss of goodwill, work +stoppage, computer failure or malfunction, loss of data or any commercial +damage, even if the Licensor has been advised of the possibility of such damage. +However, the Licensor will be liable under statutory product liability laws as +far such laws apply to the Work. + +9. Additional agreements + +While distributing the Work, You may choose to conclude an additional agreement, +defining obligations or services consistent with this Licence. However, if +accepting obligations, You may act only on your own behalf and on your sole +responsibility, not on behalf of the original Licensor or any other Contributor, +and only if You agree to indemnify, defend, and hold each Contributor harmless +for any liability incurred by, or claims asserted against such Contributor by +the fact You have accepted any warranty or additional liability. + +10. Acceptance of the Licence + +The provisions of this Licence can be accepted by clicking on an icon ‘I agree’ +placed under the bottom of a window displaying the text of this Licence or by +affirming consent in any other similar way, in accordance with the rules of +applicable law. Clicking on that icon indicates your clear and irrevocable +acceptance of this Licence and all of its terms and conditions. + +Similarly, you irrevocably accept this Licence and all of its terms and +conditions by exercising any rights granted to You by Article 2 of this Licence, +such as the use of the Work, the creation by You of a Derivative Work or the +Distribution or Communication by You of the Work or copies thereof. + +11. Information to the public + +In case of any Distribution or Communication of the Work by means of electronic +communication by You (for example, by offering to download the Work from a +remote location) the distribution channel or media (for example, a website) must +at least provide to the public the information requested by the applicable law +regarding the Licensor, the Licence and the way it may be accessible, concluded, +stored and reproduced by the Licensee. + +12. Termination of the Licence + +The Licence and the rights granted hereunder will terminate automatically upon +any breach by the Licensee of the terms of the Licence. + +Such a termination will not terminate the licences of any person who has +received the Work from the Licensee under the Licence, provided such persons +remain in full compliance with the Licence. + +13. Miscellaneous + +Without prejudice of Article 9 above, the Licence represents the complete +agreement between the Parties as to the Work. + +If any provision of the Licence is invalid or unenforceable under applicable +law, this will not affect the validity or enforceability of the Licence as a +whole. Such provision will be construed or reformed so as necessary to make it +valid and enforceable. + +The European Commission may publish other linguistic versions or new versions of +this Licence or updated versions of the Appendix, so far this is required and +reasonable, without reducing the scope of the rights granted by the Licence. New +versions of the Licence will be published with a unique version number. + +All linguistic versions of this Licence, approved by the European Commission, +have identical value. Parties can take advantage of the linguistic version of +their choice. + +14. Jurisdiction + +Without prejudice to specific agreement between parties, + +- any litigation resulting from the interpretation of this License, arising + between the European Union institutions, bodies, offices or agencies, as a + Licensor, and any Licensee, will be subject to the jurisdiction of the Court + of Justice of the European Union, as laid down in article 272 of the Treaty on + the Functioning of the European Union, + +- any litigation arising between other parties and resulting from the + interpretation of this License, will be subject to the exclusive jurisdiction + of the competent court where the Licensor resides or conducts its primary + business. + +15. Applicable Law + +Without prejudice to specific agreement between parties, + +- this Licence shall be governed by the law of the European Union Member State + where the Licensor has his seat, resides or has his registered office, + +- this licence shall be governed by Belgian law if the Licensor has no seat, + residence or registered office inside a European Union Member State. + +Appendix + +‘Compatible Licences’ according to Article 5 EUPL are: + +- GNU General Public License (GPL) v. 2, v. 3 +- GNU Affero General Public License (AGPL) v. 3 +- Open Software License (OSL) v. 2.1, v. 3.0 +- Eclipse Public License (EPL) v. 1.0 +- CeCILL v. 2.0, v. 2.1 +- Mozilla Public Licence (MPL) v. 2 +- GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3 +- Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for + works other than software +- European Union Public Licence (EUPL) v. 1.1, v. 1.2 +- Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) or Strong + Reciprocity (LiLiQ-R+). + +The European Commission may update this Appendix to later versions of the above +licences without producing a new version of the EUPL, as long as they provide +the rights granted in Article 2 of this Licence and protect the covered Source +Code from exclusive appropriation. + +All other changes or additions to this Appendix require the production of a new +EUPL version. diff --git a/README.md b/README.md index 919ed66..627aea3 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,12 @@ # Micronaut Logging support -[![Apache License 2.0](https://img.shields.io/github/license/kokuwaio/micronaut-logging)](https://github.com/kokuwaio/micronaut-logging/blob/main/LICENSE) -[![Maven Central](https://img.shields.io/maven-central/v/io.kokuwa.micronaut/micronaut-logging)](https://central.sonatype.com/namespace/io.kokuwa.micronaut) -[![Build](https://img.shields.io/github/actions/workflow/status/kokuwaio/micronaut-logging/build.yaml?branch=main)](https://github.com/kokuwaio/micronaut-logging/actions/workflows/build.yaml?query=branch%3Amain) +Enhanced logging for Micronaut using MDC or request header. + +[![Maven Central](https://img.shields.io/maven-central/v/io.kokuwa.micronaut/micronaut-logging.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/io.kokuwa.micronaut/micronaut-logging) +[![license](https://img.shields.io/badge/License-EUPL%201.2-blue)](https://git.kokuwa.io/kokuwaio/micronaut-logging/src/branch/main/LICENSE) +[![prs](https://img.shields.io/gitea/pull-requests/open/kokuwaio/micronaut-logging?gitea_url=https%3A%2F%2Fgit.kokuwa.io)](https://git.kokuwa.io/kokuwaio/micronaut-logging/pulls) +[![issues](https://img.shields.io/gitea/issues/open/kokuwaio/micronaut-logging?gitea_url=https%3A%2F%2Fgit.kokuwa.io)](https://git.kokuwa.io/kokuwaio/micronaut-logging/issues) +[![build](https://ci.kokuwa.io/api/badges/kokuwaio/micronaut-logging/status.svg)](https://ci.kokuwa.io/repos/kokuwaio/micronaut-logging/) Include in your `pom.xml`: diff --git a/docs/features/logback_mdc_level.md b/docs/features/logback_mdc_level.md index 53887d5..ee1e853 100644 --- a/docs/features/logback_mdc_level.md +++ b/docs/features/logback_mdc_level.md @@ -7,7 +7,7 @@ This can be used to change the log level based on MDC valus. E.g. change log lev Property | Description | Default -------- | ----------- | ------- `logger.mdc.enabled` | MDC enabled? | `true` -`logger.mdc.` | MDC key to use | +`logger.mdc.` | MDC key to use | `` `logger.mdc..key` | MDC key override, see complex example below for usage | `` `logger.mdc..level` | log level to use | `TRACE` `logger.mdc..loggers` | passlist of logger names, matches all loggers if empty | `[]` diff --git a/pom.xml b/pom.xml index 5a94cbb..30b450b 100644 --- a/pom.xml +++ b/pom.xml @@ -2,20 +2,13 @@ 4.0.0 - - io.kokuwa.maven - maven-parent - 0.6.18 - - - io.kokuwa.micronaut micronaut-logging - 4.0.2-SNAPSHOT + 5.0.0-SNAPSHOT Logging Support for Micronaut Enhanced logging using MDC or request header. - https://github.com/kokuwaio/micronaut-logging + https://git.kokuwa.io/kokuwaio/micronaut-logging 2020 Kokuwa.io @@ -23,55 +16,47 @@ - Apache-2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + EUPL-1.2 + https://eupl.eu/1.2/en repo - sschnabe + stephan.schnabel Stephan Schnabel - stephan@grayc.de - https://github.com/sschnabe - GrayC GmbH - https://grayc.de + https://schnabel.org + stephan@schnabel.org Europe/Berlin - https://github.com/kokuwaio/micronaut-logging - scm:git:https://github.com/kokuwaio/micronaut-logging.git - scm:git:https://github.com/kokuwaio/micronaut-logging.git + https://git.kokuwa.io/kokuwaio/micronaut-logging + scm:git:https://git.kokuwa.io/kokuwaio/micronaut-logging.git + scm:git:https://git.kokuwa.io/kokuwaio/micronaut-logging.git HEAD - github - https://github.com/kokuwaio/micronaut-logging/issues + forgejo + https://git.kokuwa.io/kokuwaio/micronaut-logging/issues - github - https://github.com/kokuwaio/micronaut-logging/actions + woodpecker + https://ci.kokuwa.io/repos/kokuwaio/micronaut-logging + + + sonatype.org + https://central.sonatype.com/repository/maven-snapshots/ + + - - - - - - 17 - 17 - class - - - - - - 4.9.0 - + 2025-06-27T00:00:00Z + UTF-8 + 17 @@ -79,7 +64,7 @@ io.micronaut.platform micronaut-platform - ${version.io.micronaut} + 4.9.0 pom import @@ -156,23 +141,120 @@ + verify + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.14.0 + + class + true + true + true + -Xlint:all,-processing + + + io.micronaut + micronaut-inject-java + + + + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.4 + + + org.apache.maven.plugins + maven-gpg-plugin + 3.2.7 + + + org.apache.maven.plugins + maven-install-plugin + 3.1.4 + + + org.apache.maven.plugins + maven-invoker-plugin + 3.9.0 + + + org.apache.maven.plugins + maven-jar-plugin + 3.4.2 + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.11.2 + + + org.apache.maven.plugins + maven-release-plugin + 3.1.1 + + verify + check + deploy + deploy,release + true + @{prefix} prepare release @{releaseLabel} [CI SKIP] + @{project.version} + + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + + ISO-8859-1 + + + + org.apache.maven.plugins + maven-source-plugin + 3.3.1 + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.3 + + + org.codehaus.mojo + tidy-maven-plugin + 1.4.0 + + + org.sonatype.central + central-publishing-maven-plugin + 0.8.0 + + + net.revelc.code.formatter + formatter-maven-plugin + 2.27.0 + + ${project.basedir}/src/eclipse/formatter.xml + + + + net.revelc.code + impsort-maven-plugin + 1.12.0 + + true + java.,javax.,jakarta.,org. + + + + - - - org.apache.maven.plugins - maven-compiler-plugin - - - - io.micronaut - micronaut-inject-java - ${version.io.micronaut} - - - - - org.apache.maven.plugins @@ -184,10 +266,201 @@ integration-test verify + + ${project.build.directory}/its + true + test + false + true + + + + + + + + org.apache.maven.plugins + maven-install-plugin + + + default-install + + + + + dev + + + !env.CI + + + + true + + + + + org.codehaus.mojo + tidy-maven-plugin + + + validate + + pom + + + + + + net.revelc.code + impsort-maven-plugin + + + validate + + sort + + + + + + net.revelc.code.formatter + formatter-maven-plugin + + + validate + + format + + + + + + + + + check + + + env.CI + + + + + + org.codehaus.mojo + tidy-maven-plugin + + + validate + + check + + + + + + net.revelc.code + impsort-maven-plugin + + + validate + + check + + + + + + net.revelc.code.formatter + formatter-maven-plugin + + + validate + + validate + + + + + + + + + deploy + + + env.CI + + + + + + + + org.apache.maven.plugins + maven-source-plugin + + + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + + jar + + + + + + + + org.apache.maven.plugins + maven-gpg-plugin + + + + sign + + + bc + + + + + + + + + + release + + + + org.sonatype.central + central-publishing-maven-plugin + true + + sonatype.org + true + published + + + + + + diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..47fe869 --- /dev/null +++ b/renovate.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["local>infrastructure/renovate-config", ":reviewer(stephan.schnabel)"] +} diff --git a/src/eclipse/formatter.xml b/src/eclipse/formatter.xml new file mode 100644 index 0000000..61186a2 --- /dev/null +++ b/src/eclipse/formatter.xml @@ -0,0 +1,404 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/it/invoker.properties b/src/it/invoker.properties new file mode 100644 index 0000000..7920ff9 --- /dev/null +++ b/src/it/invoker.properties @@ -0,0 +1,3 @@ +invoker.environmentVariables.KUBERNETES_SERVICE_HOST= +invoker.environmentVariables.LOGBACK_APPENDER= +invoker.environmentVariables.GOOGLE_CLOUD_PROJECT= diff --git a/src/it/pom.xml b/src/it/pom.xml index 07f915c..35f3594 100644 --- a/src/it/pom.xml +++ b/src/it/pom.xml @@ -18,38 +18,9 @@ - - - - - - @project.build.sourceEncoding@ - - @maven.compiler.source@ - @maven.compiler.target@ - true - true - true - true - false - - - - - - - - @version.org.apache.maven.plugins.compiler@ - @version.org.apache.maven.plugins.install@ - @version.org.apache.maven.plugins.jar@ - @version.org.apache.maven.plugins.resources@ - @version.org.apache.maven.plugins.surefire@ - - - - @project.version@ - @version.io.micronaut@ - + 2025-06-27T00:00:00Z + UTF-8 + 17 @@ -57,12 +28,12 @@ io.kokuwa.micronaut micronaut-logging - ${version.io.kokuwa.micronaut.logging} + @project.version@ io.micronaut.platform micronaut-platform - ${version.io.micronaut} + 4.9.0 pom import @@ -95,36 +66,30 @@ org.apache.maven.plugins maven-compiler-plugin - ${version.org.apache.maven.plugins.compiler} + 3.14.0 + class + true + true + true + -Xlint:all,-processing io.micronaut micronaut-inject-java - ${version.io.micronaut} - - org.apache.maven.plugins - maven-install-plugin - ${version.org.apache.maven.plugins.install} - - - org.apache.maven.plugins - maven-jar-plugin - ${version.org.apache.maven.plugins.jar} - org.apache.maven.plugins maven-resources-plugin - ${version.org.apache.maven.plugins.resources} + 3.3.1 org.apache.maven.plugins maven-surefire-plugin - ${version.org.apache.maven.plugins.surefire} + 3.5.3 @@ -151,26 +116,6 @@ - - org.apache.maven.plugins - maven-jar-plugin - - - default-jar - - - - - - org.apache.maven.plugins - maven-install-plugin - - - default-install - - - - diff --git a/src/main/java/io/kokuwa/micronaut/logging/LogbackUtil.java b/src/main/java/io/kokuwa/micronaut/logging/LogbackUtil.java index f02ee78..bb21701 100644 --- a/src/main/java/io/kokuwa/micronaut/logging/LogbackUtil.java +++ b/src/main/java/io/kokuwa/micronaut/logging/LogbackUtil.java @@ -4,13 +4,14 @@ import java.util.Objects; import java.util.Optional; import java.util.function.Supplier; +import jakarta.inject.Singleton; + import org.slf4j.LoggerFactory; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.turbo.TurboFilter; import io.micronaut.context.annotation.BootstrapContextCompatible; import io.micronaut.context.annotation.Requires; -import jakarta.inject.Singleton; /** * Utility class for Logback operations. diff --git a/src/main/java/io/kokuwa/micronaut/logging/http/level/LogLevelServerFilter.java b/src/main/java/io/kokuwa/micronaut/logging/http/level/LogLevelServerFilter.java index ae8475b..6626fee 100644 --- a/src/main/java/io/kokuwa/micronaut/logging/http/level/LogLevelServerFilter.java +++ b/src/main/java/io/kokuwa/micronaut/logging/http/level/LogLevelServerFilter.java @@ -3,6 +3,9 @@ package io.kokuwa.micronaut.logging.http.level; import java.util.Map; import java.util.Optional; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.PreDestroy; + import org.reactivestreams.Publisher; import ch.qos.logback.classic.turbo.TurboFilter; @@ -17,8 +20,6 @@ import io.micronaut.http.annotation.Filter; import io.micronaut.http.filter.ServerFilterChain; import io.micronaut.http.filter.ServerFilterPhase; import io.micronaut.runtime.context.scope.Refreshable; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.PreDestroy; /** * Http request logging filter. diff --git a/src/main/java/io/kokuwa/micronaut/logging/mdc/MDCTurboFilterConfigurer.java b/src/main/java/io/kokuwa/micronaut/logging/mdc/MDCTurboFilterConfigurer.java index 7f4b176..de87997 100644 --- a/src/main/java/io/kokuwa/micronaut/logging/mdc/MDCTurboFilterConfigurer.java +++ b/src/main/java/io/kokuwa/micronaut/logging/mdc/MDCTurboFilterConfigurer.java @@ -46,7 +46,7 @@ public class MDCTurboFilterConfigurer implements LoggingSystem { } @Override - public void refresh() { + public final void refresh() { mdcs = environment.getPropertyEntries(PREFIX); initialized = false; diff --git a/src/test/java/io/kokuwa/micronaut/logging/http/AbstractFilterTest.java b/src/test/java/io/kokuwa/micronaut/logging/http/AbstractFilterTest.java index b7c89cc..4587dcb 100644 --- a/src/test/java/io/kokuwa/micronaut/logging/http/AbstractFilterTest.java +++ b/src/test/java/io/kokuwa/micronaut/logging/http/AbstractFilterTest.java @@ -7,18 +7,19 @@ import static org.junit.jupiter.api.Assertions.fail; import java.util.Map; import java.util.function.Consumer; +import jakarta.inject.Inject; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; +import ch.qos.logback.classic.Level; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.nimbusds.jose.JOSEException; import com.nimbusds.jwt.JWTClaimsSet; - -import ch.qos.logback.classic.Level; import io.kokuwa.micronaut.logging.AbstractTest; import io.micronaut.core.annotation.Nullable; import io.micronaut.core.util.CollectionUtils; @@ -37,7 +38,6 @@ import io.micronaut.security.rules.SecurityRule; import io.micronaut.security.token.jwt.signature.SignatureGeneratorConfiguration; import io.micronaut.serde.annotation.Serdeable; import io.micronaut.test.extensions.junit5.annotation.MicronautTest; -import jakarta.inject.Inject; /** * Test for {@link HttpServerFilter}.