diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 22eb8a7..845e2ce 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -11,9 +11,14 @@ updates:
time: "09:00"
timezone: Europe/Berlin
ignore:
- # logback 1.3 and 1.4 are compatible with slf4j 2.x only
+ # logback 1.3 and 1.4 are compatible with slf4j 2.x only and not supported right now
- dependency-name: ch.qos.logback:logback-classic
update-types: [version-update:semver-major, version-update:semver-minor]
+ - dependency-name: org.slf4j:slf4j-api
+ update-types: [version-update:semver-major]
+ # micronaut 4 will ship logback 1.4
+ - dependency-name: io.micronaut:*
+ update-types: [version-update:semver-major]
- package-ecosystem: github-actions
directory: /
open-pull-requests-limit: 10
diff --git a/README.md b/README.md
index 13f87ec..b9640c1 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,29 @@ Include in your `pom.xml`:
```
+Or use in `dependencyManagement` in `pom.xml`:
+
+```xml
+
+
+
+ io.kokuwa.micronaut
+ micronaut-logging
+ ${version.io.kokuwa.micronaut.logging}
+ pom
+ import
+
+
+ io.micronaut
+ micronaut-bom
+ ${version.io.micronaut}
+ pom
+ import
+
+
+
+```
+
## Features
* Version [3.x](https://github.com/kokuwaio/micronaut-logging/tree/main) is based on SLF4J 1.7 & Logback 1.2
diff --git a/pom.xml b/pom.xml
index 69f60ed..a0db353 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
io.kokuwa.micronaut
micronaut-logging
- 3.0.7-SNAPSHOT
+ 3.1.0-SNAPSHOT
Logging Support for Micronaut
Enhanced logging using MDC or request header.
@@ -86,6 +86,7 @@
3.1.1
3.0.1
3.1.1
+ 3.5.1
3.5.0
3.3.0
3.0.0
@@ -101,20 +102,28 @@
1.2.12
0.1.5
+ ${project.version}
3.9.1
+ 3.11.0
+ 1.7.36
-
-
+
+
- io.micronaut
- micronaut-bom
- ${version.io.micronaut}
- pom
- import
+ io.kokuwa.micronaut
+ micronaut-logging
+ ${version.io.kokuwa.micronaut.logging}
+
+
+
+
+ org.slf4j
+ slf4j-api
+ ${version.org.slf4j.api}
@@ -123,6 +132,11 @@
logback-classic
${version.ch.qos.logback}
+
+ ch.qos.logback
+ logback-core
+ ${version.ch.qos.logback}
+
ch.qos.logback.contrib
logback-json-classic
@@ -147,31 +161,37 @@
io.micronaut
micronaut-runtime
+ ${version.io.micronaut}
provided
io.micronaut.security
micronaut-security
+ ${version.io.micronaut}
provided
io.micronaut.test
micronaut-test-junit5
+ ${version.io.micronaut}
test
io.micronaut
micronaut-http-client
+ ${version.io.micronaut}
test
io.micronaut
micronaut-http-server-netty
+ ${version.io.micronaut}
test
io.micronaut.security
micronaut-security-jwt
+ ${version.io.micronaut}
test
@@ -258,6 +278,11 @@
maven-install-plugin
${version.org.apache.maven.plugins.install}
+
+ org.apache.maven.plugins
+ maven-invoker-plugin
+ ${version.org.apache.maven.plugins.invoker}
+
org.apache.maven.plugins
maven-jar-plugin
@@ -276,6 +301,7 @@
@{project.version}
release
true
+ @{prefix} prepare release @{releaseLabel} [no ci]
true
@@ -311,6 +337,28 @@
+
+
+ org.apache.maven.plugins
+ maven-invoker-plugin
+
+
+
+ install
+ integration-test
+ verify
+
+
+ ${project.build.directory}/it
+ 1C
+ false
+ true
+ true
+
+
+
+
+
org.codehaus.mojo
diff --git a/src/it/level-from-micronaut/invoker.properties b/src/it/level-from-micronaut/invoker.properties
new file mode 100644
index 0000000..46bbf8c
--- /dev/null
+++ b/src/it/level-from-micronaut/invoker.properties
@@ -0,0 +1 @@
+invoker.environmentVariables.LOGGER_LEVELS_IO_KOKUWA_MICRONAUT_LOGGING=DEBUG
diff --git a/src/it/level-from-micronaut/pom.xml b/src/it/level-from-micronaut/pom.xml
new file mode 100644
index 0000000..2a6450c
--- /dev/null
+++ b/src/it/level-from-micronaut/pom.xml
@@ -0,0 +1,12 @@
+
+
+ 4.0.0
+
+
+ @project.groupId@
+ @project.artifactId@-it
+ LOCAL-SNAPSHOT
+
+
+ @project.artifactId@-it-level-from-micronaut
+
diff --git a/src/it/level-from-micronaut/postbuild.bsh b/src/it/level-from-micronaut/postbuild.bsh
new file mode 100644
index 0000000..a280b60
--- /dev/null
+++ b/src/it/level-from-micronaut/postbuild.bsh
@@ -0,0 +1,21 @@
+// verify log
+
+String expected = "^[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{0,3} main DEBUG i.k.m.logging.LoggingTest test-output-marker$";
+String[] logs = org.codehaus.plexus.util.FileUtils.fileRead(basedir + "/build.log").split("\n");
+
+for (String log : logs) {
+ if (!log.contains("test-output-marker")) {
+ continue;
+ }
+ if (java.util.regex.Pattern.matches(expected, log)) {
+ return true;
+ } else {
+ System.out.println("marker found, but formatting invalid:");
+ System.out.println("[EXPECTED] " + expected);
+ System.out.println("[ACTUAL] " + log);
+ return false;
+ }
+}
+
+System.out.println("marker not found");
+return false;
diff --git a/src/it/log-gcp-from-env/invoker.properties b/src/it/log-gcp-from-env/invoker.properties
new file mode 100644
index 0000000..f9f63a8
--- /dev/null
+++ b/src/it/log-gcp-from-env/invoker.properties
@@ -0,0 +1 @@
+invoker.environmentVariables.LOGBACK_APPENDER=GCP
diff --git a/src/it/log-gcp-from-env/pom.xml b/src/it/log-gcp-from-env/pom.xml
new file mode 100644
index 0000000..1c56178
--- /dev/null
+++ b/src/it/log-gcp-from-env/pom.xml
@@ -0,0 +1,12 @@
+
+
+ 4.0.0
+
+
+ @project.groupId@
+ @project.artifactId@-it
+ LOCAL-SNAPSHOT
+
+
+ @project.artifactId@-it-log-gcp-from-env
+
diff --git a/src/it/log-gcp-from-env/postbuild.bsh b/src/it/log-gcp-from-env/postbuild.bsh
new file mode 100644
index 0000000..d9e0657
--- /dev/null
+++ b/src/it/log-gcp-from-env/postbuild.bsh
@@ -0,0 +1,21 @@
+// verify log
+
+String expected = "^\\{\"time\":\"202[3-9]-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{0,3}Z\",\"severity\":\"INFO\",\"thread\":\"main\",\"logger\":\"io.kokuwa.micronaut.logging.LoggingTest\",\"message\":\"test-output-marker\",\"raw-message\":\"test-output-marker\"}$";
+String[] logs = org.codehaus.plexus.util.FileUtils.fileRead(basedir + "/build.log").split("\n");
+
+for (String log : logs) {
+ if (!log.contains("test-output-marker")) {
+ continue;
+ }
+ if (java.util.regex.Pattern.matches(expected, log)) {
+ return true;
+ } else {
+ System.out.println("marker found, but formatting invalid:");
+ System.out.println("[EXPECTED] " + expected);
+ System.out.println("[ACTUAL] " + log);
+ return false;
+ }
+}
+
+System.out.println("marker not found");
+return false;
diff --git a/src/it/log-gcp-from-gcloud/invoker.properties b/src/it/log-gcp-from-gcloud/invoker.properties
new file mode 100644
index 0000000..ec347b6
--- /dev/null
+++ b/src/it/log-gcp-from-gcloud/invoker.properties
@@ -0,0 +1 @@
+invoker.environmentVariables.GOOGLE_CLOUD_PROJECT=value
diff --git a/src/it/log-gcp-from-gcloud/pom.xml b/src/it/log-gcp-from-gcloud/pom.xml
new file mode 100644
index 0000000..0030546
--- /dev/null
+++ b/src/it/log-gcp-from-gcloud/pom.xml
@@ -0,0 +1,12 @@
+
+
+ 4.0.0
+
+
+ @project.groupId@
+ @project.artifactId@-it
+ LOCAL-SNAPSHOT
+
+
+ @project.artifactId@-it-log-gcp-from-gcloud
+
diff --git a/src/it/log-gcp-from-gcloud/postbuild.bsh b/src/it/log-gcp-from-gcloud/postbuild.bsh
new file mode 100644
index 0000000..d9e0657
--- /dev/null
+++ b/src/it/log-gcp-from-gcloud/postbuild.bsh
@@ -0,0 +1,21 @@
+// verify log
+
+String expected = "^\\{\"time\":\"202[3-9]-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{0,3}Z\",\"severity\":\"INFO\",\"thread\":\"main\",\"logger\":\"io.kokuwa.micronaut.logging.LoggingTest\",\"message\":\"test-output-marker\",\"raw-message\":\"test-output-marker\"}$";
+String[] logs = org.codehaus.plexus.util.FileUtils.fileRead(basedir + "/build.log").split("\n");
+
+for (String log : logs) {
+ if (!log.contains("test-output-marker")) {
+ continue;
+ }
+ if (java.util.regex.Pattern.matches(expected, log)) {
+ return true;
+ } else {
+ System.out.println("marker found, but formatting invalid:");
+ System.out.println("[EXPECTED] " + expected);
+ System.out.println("[ACTUAL] " + log);
+ return false;
+ }
+}
+
+System.out.println("marker not found");
+return false;
diff --git a/src/it/log-json-from-env/invoker.properties b/src/it/log-json-from-env/invoker.properties
new file mode 100644
index 0000000..08de0de
--- /dev/null
+++ b/src/it/log-json-from-env/invoker.properties
@@ -0,0 +1 @@
+invoker.environmentVariables.LOGBACK_APPENDER=JSON
diff --git a/src/it/log-json-from-env/pom.xml b/src/it/log-json-from-env/pom.xml
new file mode 100644
index 0000000..1ae3e61
--- /dev/null
+++ b/src/it/log-json-from-env/pom.xml
@@ -0,0 +1,12 @@
+
+
+ 4.0.0
+
+
+ @project.groupId@
+ @project.artifactId@-it
+ LOCAL-SNAPSHOT
+
+
+ @project.artifactId@-it-log-json-from-env
+
diff --git a/src/it/log-json-from-env/postbuild.bsh b/src/it/log-json-from-env/postbuild.bsh
new file mode 100644
index 0000000..0693fe0
--- /dev/null
+++ b/src/it/log-json-from-env/postbuild.bsh
@@ -0,0 +1,21 @@
+// verify log
+
+String expected = "^\\{\"timestamp\":\"[0-9]{13}\",\"level\":\"INFO\",\"thread\":\"main\",\"logger\":\"io.kokuwa.micronaut.logging.LoggingTest\",\"message\":\"test-output-marker\",\"raw-message\":\"test-output-marker\"}$";
+String[] logs = org.codehaus.plexus.util.FileUtils.fileRead(basedir + "/build.log").split("\n");
+
+for (String log : logs) {
+ if (!log.contains("test-output-marker")) {
+ continue;
+ }
+ if (java.util.regex.Pattern.matches(expected, log)) {
+ return true;
+ } else {
+ System.out.println("marker found, but formatting invalid:");
+ System.out.println("[EXPECTED] " + expected);
+ System.out.println("[ACTUAL] " + log);
+ return false;
+ }
+}
+
+System.out.println("marker not found");
+return false;
diff --git a/src/it/log-json-from-kubernetes/invoker.properties b/src/it/log-json-from-kubernetes/invoker.properties
new file mode 100644
index 0000000..5bba112
--- /dev/null
+++ b/src/it/log-json-from-kubernetes/invoker.properties
@@ -0,0 +1 @@
+invoker.environmentVariables.KUBERNETES_SERVICE_HOST=value
diff --git a/src/it/log-json-from-kubernetes/pom.xml b/src/it/log-json-from-kubernetes/pom.xml
new file mode 100644
index 0000000..885bc3b
--- /dev/null
+++ b/src/it/log-json-from-kubernetes/pom.xml
@@ -0,0 +1,12 @@
+
+
+ 4.0.0
+
+
+ @project.groupId@
+ @project.artifactId@-it
+ LOCAL-SNAPSHOT
+
+
+ @project.artifactId@-it-log-json-from-kubernetes
+
diff --git a/src/it/log-json-from-kubernetes/postbuild.bsh b/src/it/log-json-from-kubernetes/postbuild.bsh
new file mode 100644
index 0000000..0693fe0
--- /dev/null
+++ b/src/it/log-json-from-kubernetes/postbuild.bsh
@@ -0,0 +1,21 @@
+// verify log
+
+String expected = "^\\{\"timestamp\":\"[0-9]{13}\",\"level\":\"INFO\",\"thread\":\"main\",\"logger\":\"io.kokuwa.micronaut.logging.LoggingTest\",\"message\":\"test-output-marker\",\"raw-message\":\"test-output-marker\"}$";
+String[] logs = org.codehaus.plexus.util.FileUtils.fileRead(basedir + "/build.log").split("\n");
+
+for (String log : logs) {
+ if (!log.contains("test-output-marker")) {
+ continue;
+ }
+ if (java.util.regex.Pattern.matches(expected, log)) {
+ return true;
+ } else {
+ System.out.println("marker found, but formatting invalid:");
+ System.out.println("[EXPECTED] " + expected);
+ System.out.println("[ACTUAL] " + log);
+ return false;
+ }
+}
+
+System.out.println("marker not found");
+return false;
diff --git a/src/it/log-text/pom.xml b/src/it/log-text/pom.xml
new file mode 100644
index 0000000..d245ffd
--- /dev/null
+++ b/src/it/log-text/pom.xml
@@ -0,0 +1,12 @@
+
+
+ 4.0.0
+
+
+ @project.groupId@
+ @project.artifactId@-it
+ LOCAL-SNAPSHOT
+
+
+ @project.artifactId@-it-log-text
+
diff --git a/src/it/log-text/postbuild.bsh b/src/it/log-text/postbuild.bsh
new file mode 100644
index 0000000..aa337ea
--- /dev/null
+++ b/src/it/log-text/postbuild.bsh
@@ -0,0 +1,21 @@
+// verify log
+
+String expected = "^[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{0,3} main INFO i.k.m.logging.LoggingTest test-output-marker$";
+String[] logs = org.codehaus.plexus.util.FileUtils.fileRead(basedir + "/build.log").split("\n");
+
+for (String log : logs) {
+ if (!log.contains("test-output-marker")) {
+ continue;
+ }
+ if (java.util.regex.Pattern.matches(expected, log)) {
+ return true;
+ } else {
+ System.out.println("marker found, but formatting invalid:");
+ System.out.println("[EXPECTED] " + expected);
+ System.out.println("[ACTUAL] " + log);
+ return false;
+ }
+}
+
+System.out.println("marker not found");
+return false;
diff --git a/src/it/logback-xml-custom/pom.xml b/src/it/logback-xml-custom/pom.xml
new file mode 100644
index 0000000..d245ffd
--- /dev/null
+++ b/src/it/logback-xml-custom/pom.xml
@@ -0,0 +1,12 @@
+
+
+ 4.0.0
+
+
+ @project.groupId@
+ @project.artifactId@-it
+ LOCAL-SNAPSHOT
+
+
+ @project.artifactId@-it-log-text
+
diff --git a/src/it/logback-xml-custom/postbuild.bsh b/src/it/logback-xml-custom/postbuild.bsh
new file mode 100644
index 0000000..c6a3d94
--- /dev/null
+++ b/src/it/logback-xml-custom/postbuild.bsh
@@ -0,0 +1,21 @@
+// verify log
+
+String expected = "^TRACE io.kokuwa.micronaut.logging.LoggingTest test-output-marker$";
+String[] logs = org.codehaus.plexus.util.FileUtils.fileRead(basedir + "/build.log").split("\n");
+
+for (String log : logs) {
+ if (!log.contains("test-output-marker")) {
+ continue;
+ }
+ if (java.util.regex.Pattern.matches(expected, log)) {
+ return true;
+ } else {
+ System.out.println("marker found, but formatting invalid:");
+ System.out.println("[EXPECTED] " + expected);
+ System.out.println("[ACTUAL] " + log);
+ return false;
+ }
+}
+
+System.out.println("marker not found");
+return false;
diff --git a/src/it/logback-xml-custom/src/test/resources/logback.xml b/src/it/logback-xml-custom/src/test/resources/logback.xml
new file mode 100644
index 0000000..a704605
--- /dev/null
+++ b/src/it/logback-xml-custom/src/test/resources/logback.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ %-5level %logger{40} %msg%n
+
+
+
+
+
+
+
+
diff --git a/src/it/pom.xml b/src/it/pom.xml
new file mode 100644
index 0000000..0641bc1
--- /dev/null
+++ b/src/it/pom.xml
@@ -0,0 +1,179 @@
+
+
+ 4.0.0
+
+ @project.groupId@
+ @project.artifactId@-it
+ LOCAL-SNAPSHOT
+ pom
+
+
+ log-text
+ log-json-from-env
+ log-json-from-kubernetes
+ log-gcp-from-env
+ log-gcp-from-gcloud
+ level-from-micronaut
+ logback-xml-custom
+
+
+
+
+
+
+
+
+ @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@
+
+
+
+ @version.io.kokuwa.micronaut.logging@
+ @version.io.micronaut@
+
+
+
+
+
+
+ io.kokuwa.micronaut
+ micronaut-logging
+ ${version.io.kokuwa.micronaut.logging}
+ pom
+ import
+
+
+ io.micronaut
+ micronaut-bom
+ ${version.io.micronaut}
+ pom
+ import
+
+
+
+
+
+
+
+ io.micronaut
+ micronaut-runtime
+
+
+ io.micronaut.test
+ micronaut-test-junit5
+ test
+
+
+ io.kokuwa.micronaut
+ micronaut-logging
+ runtime
+
+
+
+
+
+ ${project.basedir}/../src/test/java
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${version.org.apache.maven.plugins.compiler}
+
+
+
+ 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}
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${version.org.apache.maven.plugins.surefire}
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ default-resources
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ default-compile
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+ default-jar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-install-plugin
+
+
+ default-install
+
+
+
+
+
+
+
+
diff --git a/src/it/src/test/java/io/kokuwa/micronaut/logging/LoggingTest.java b/src/it/src/test/java/io/kokuwa/micronaut/logging/LoggingTest.java
new file mode 100644
index 0000000..2d8463a
--- /dev/null
+++ b/src/it/src/test/java/io/kokuwa/micronaut/logging/LoggingTest.java
@@ -0,0 +1,13 @@
+package io.kokuwa.micronaut.logging;
+
+@io.micronaut.test.extensions.junit5.annotation.MicronautTest
+public class LoggingTest {
+
+ @org.junit.jupiter.api.Test
+ void log() {
+ var log = org.slf4j.LoggerFactory.getLogger(LoggingTest.class);
+ log.trace("test-output-marker");
+ log.debug("test-output-marker");
+ log.info("test-output-marker");
+ }
+}