Skip to content

Commit 3c38090

Browse files
authored
Logging refactoring (#4825)
* Logging refactoring * LogConfig for any logging framework - moved to logging/common * Moved from common to logging * Simple integration with System.Logger for log4j and slf4j
1 parent 8eb83bd commit 3c38090

File tree

155 files changed

+481
-313
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

155 files changed

+481
-313
lines changed

CHANGELOG.md

+6-2
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,16 @@ For Helidon 2.x releases please see [Helidon 2.x CHANGELOG.md](https://github.co
1111

1212
For Helidon 1.x releases please see [Helidon 1.x CHANGELOG.md](https://github.com/oracle/helidon/blob/helidon-1.x/CHANGELOG.md)
1313

14-
## [4.0.0-ALPHA-1]
15-
14+
## [4.0.0]
1615
We are pleased to announce Helidon 4.0.0 a major release that includes significant new features and fixes. As a major release it also includes some backward incompatible API changes.
1716

17+
## [4.0.0-ALPHA-1]
18+
1819
### Notable Changes
1920

21+
- `LogConfig` is moved from `helidon-common` to `helidon-logging-common` and uses a service loader to initialize logging implementation; this means that now you can simply add `helidon-logging-log4j` or `helidon-logging-slf4j` to you classpath and these frameworks will be used instead of the default `helidon-logging-jul`; also as we are moving to `System.Logger`, integration will work without additional configuration steps, and all Helidon logs should be seen in `log4j` or `slf4j` as long as the libraries are on classpath
22+
- `HelidonConsoleHandler` is now available only in `helidon-logging-jul` module
23+
- `sfl4j` upgraded to version 2.0.0 to support `System.Logger`
2024
- Java 19 early access (with Loom support) as the minimal Java version
2125
- Using System.Logger instead of java util logging (incremental change)
2226
- `HelidonServiceLoader` is now part of `helidon-common` module

archetypes/helidon/src/main/archetype/mp/common/files/src/main/resources/logging.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# For more information see $JAVA_HOME/jre/lib/logging.properties
44

55
# Send messages to the console
6-
handlers=io.helidon.common.HelidonConsoleHandler
6+
handlers=io.helidon.logging.jul.HelidonConsoleHandler
77

88
# HelidonConsoleHandler uses a SimpleFormatter subclass that replaces "!thread!" with the current thread
99
java.util.logging.SimpleFormatter.format=%1$tY.%1$tm.%1$td %1$tH:%1$tM:%1$tS %4$s %3$s !thread!: %5$s%6$s%n

archetypes/helidon/src/main/archetype/se/common/common-se.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
</map>
5252
</list>
5353
<list key="Main-helidon-imports">
54-
<value>io.helidon.common.LogConfig</value>
54+
<value>io.helidon.logging.common.LogConfig</value>
5555
<value>io.helidon.common.reactive.Single</value>
5656
<value>io.helidon.config.Config</value>
5757
<value>io.helidon.reactive.webserver.Routing</value>

archetypes/helidon/src/main/archetype/se/common/files/src/main/resources/logging.properties.mustache

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# For more information see $JAVA_HOME/jre/lib/logging.properties
33

44
# Send messages to the console
5-
handlers=io.helidon.common.HelidonConsoleHandler
5+
handlers=io.helidon.logging.jul.HelidonConsoleHandler
66

77
# HelidonConsoleHandler uses a SimpleFormatter subclass that replaces "!thread!" with the current thread
88
java.util.logging.SimpleFormatter.format=%1$tY.%1$tm.%1$td %1$tH:%1$tM:%1$tS %4$s %3$s !thread!: %5$s%6$s%n

common/common/src/main/java/io/helidon/common/HelidonConsoleHandler.java

-77
This file was deleted.

common/common/src/main/resources/META-INF/native-image/io.helidon/helidon-common/reflect-config.json

-7
This file was deleted.

config/config/pom.xml

+4
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@
5454
<groupId>io.helidon.common</groupId>
5555
<artifactId>helidon-common-media-type</artifactId>
5656
</dependency>
57+
<dependency>
58+
<groupId>io.helidon.logging</groupId>
59+
<artifactId>helidon-logging-jul</artifactId>
60+
</dependency>
5761
<dependency>
5862
<groupId>io.helidon.config</groupId>
5963
<artifactId>helidon-config-metadata-processor</artifactId>

dependencies/pom.xml

+13-3
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@
9595
<version.lib.jgit>5.11.1.202105131744-r</version.lib.jgit>
9696
<version.lib.junit>5.7.0</version.lib.junit>
9797
<version.lib.kafka>2.8.1</version.lib.kafka>
98-
<version.lib.log4j>2.17.1</version.lib.log4j>
99-
<version.lib.logback>1.2.10</version.lib.logback>
98+
<version.lib.log4j>2.18.0</version.lib.log4j>
99+
<version.lib.logback>1.4.0</version.lib.logback>
100100
<version.lib.mariadb-java-client>2.6.2</version.lib.mariadb-java-client>
101101
<version.lib.maven-wagon>2.10</version.lib.maven-wagon>
102102
<version.lib.micrometer>1.6.6</version.lib.micrometer>
@@ -139,7 +139,7 @@
139139
<version.lib.parsson>1.0.2</version.lib.parsson>
140140
<version.lib.postgresql>42.4.1</version.lib.postgresql>
141141
<version.lib.prometheus>0.9.0</version.lib.prometheus>
142-
<version.lib.slf4j>1.7.32</version.lib.slf4j>
142+
<version.lib.slf4j>2.0.0</version.lib.slf4j>
143143
<version.lib.smallrye-openapi>2.1.16</version.lib.smallrye-openapi>
144144
<version.lib.snakeyaml>1.30</version.lib.snakeyaml>
145145
<version.lib.typesafe-config>1.4.2</version.lib.typesafe-config>
@@ -776,6 +776,11 @@
776776
<artifactId>slf4j-api</artifactId>
777777
<version>${version.lib.slf4j}</version>
778778
</dependency>
779+
<dependency>
780+
<groupId>org.slf4j</groupId>
781+
<artifactId>slf4j-jdk-platform-logging</artifactId>
782+
<version>${version.lib.slf4j}</version>
783+
</dependency>
779784
<dependency>
780785
<groupId>org.slf4j</groupId>
781786
<artifactId>slf4j-jdk14</artifactId>
@@ -786,6 +791,11 @@
786791
<artifactId>log4j-api</artifactId>
787792
<version>${version.lib.log4j}</version>
788793
</dependency>
794+
<dependency>
795+
<groupId>org.apache.logging.log4j</groupId>
796+
<artifactId>log4j-jpl</artifactId>
797+
<version>${version.lib.log4j}</version>
798+
</dependency>
789799
<dependency>
790800
<groupId>io.smallrye</groupId>
791801
<artifactId>smallrye-open-api-core</artifactId>

docs/mp/guides/mp-tutorial.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,7 @@ Create a `logging.properties` file in `src/main/resources` with
636636
.Example logging.properties file
637637
----
638638
# Send messages to the console
639-
handlers=io.helidon.common.HelidonConsoleHandler # <1>
639+
handlers=io.helidon.logging.jul.HelidonConsoleHandler # <1>
640640
641641
# HelidonConsoleHandler uses a SimpleFormatter subclass that replaces "!thread!" with the current thread
642642
java.util.logging.SimpleFormatter.format=%1$tY.%1$tm.%1$td %1$tH:%1$tM:%1$tS %4$s %3$s !thread!: %5$s%6$s%n # <2>

examples/cors/src/main/java/io/helidon/examples/cors/Main.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
import java.io.IOException;
2020
import java.util.logging.Logger;
2121

22-
import io.helidon.common.LogConfig;
2322
import io.helidon.common.reactive.Single;
2423
import io.helidon.config.Config;
2524
import io.helidon.health.checks.HealthChecks;
25+
import io.helidon.logging.common.LogConfig;
2626
import io.helidon.metrics.serviceapi.MetricsSupport;
2727
import io.helidon.reactive.health.HealthSupport;
2828
import io.helidon.reactive.media.jsonp.JsonpSupport;

examples/dbclient/jdbc/src/main/java/io/helidon/examples/dbclient/jdbc/JdbcExampleMain.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
package io.helidon.examples.dbclient.jdbc;
1818

19-
import io.helidon.common.LogConfig;
2019
import io.helidon.config.Config;
20+
import io.helidon.logging.common.LogConfig;
2121
import io.helidon.metrics.serviceapi.MetricsSupport;
2222
import io.helidon.reactive.dbclient.DbClient;
2323
import io.helidon.reactive.dbclient.health.DbClientHealthCheck;

examples/dbclient/jdbc/src/main/java/module-info.java

+2
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,6 @@
2828
requires io.helidon.metrics.serviceapi;
2929
requires io.helidon.tracing;
3030
requires io.helidon.examples.dbclient.common;
31+
requires io.helidon.logging.common;
32+
requires io.helidon.logging.jul;
3133
}

examples/dbclient/mongodb/src/main/java/io/helidon/examples/dbclient/mongo/MongoDbExampleMain.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
package io.helidon.examples.dbclient.mongo;
1818

19-
import io.helidon.common.LogConfig;
2019
import io.helidon.config.Config;
20+
import io.helidon.logging.common.LogConfig;
2121
import io.helidon.metrics.serviceapi.MetricsSupport;
2222
import io.helidon.reactive.dbclient.DbClient;
2323
import io.helidon.reactive.dbclient.DbStatementType;

examples/dbclient/mongodb/src/main/java/module-info.java

+2
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,6 @@
3131
requires io.helidon.examples.dbclient.common;
3232
requires io.helidon.reactive.dbclient.metrics;
3333
requires io.helidon.reactive.dbclient.tracing;
34+
requires io.helidon.logging.common;
35+
requires io.helidon.logging.jul;
3436
}

examples/dbclient/pokemons/src/main/java/io/helidon/examples/dbclient/pokemons/PokemonMain.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
package io.helidon.examples.dbclient.pokemons;
1818

19-
import io.helidon.common.LogConfig;
2019
import io.helidon.config.Config;
2120
import io.helidon.config.ConfigSources;
21+
import io.helidon.logging.common.LogConfig;
2222
import io.helidon.metrics.serviceapi.MetricsSupport;
2323
import io.helidon.reactive.dbclient.DbClient;
2424
import io.helidon.reactive.dbclient.health.DbClientHealthCheck;

examples/dbclient/pokemons/src/main/java/module-info.java

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
requires io.helidon.tracing;
3333
requires io.helidon.reactive.dbclient;
3434
requires io.helidon.reactive.webserver;
35+
requires io.helidon.logging.common;
36+
requires io.helidon.logging.jul;
3537

3638
provides DbMapperProvider with io.helidon.examples.dbclient.pokemons.PokemonMapperProvider;
3739

examples/employee-app/src/main/java/io/helidon/service/employee/Main.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616

1717
package io.helidon.service.employee;
1818

19-
import io.helidon.common.LogConfig;
2019
import io.helidon.common.reactive.Single;
2120
import io.helidon.config.Config;
2221
import io.helidon.health.checks.HealthChecks;
22+
import io.helidon.logging.common.LogConfig;
2323
import io.helidon.metrics.serviceapi.MetricsSupport;
2424
import io.helidon.reactive.health.HealthSupport;
2525
import io.helidon.reactive.media.jsonb.JsonbSupport;

examples/grpc/basics/src/main/java/io/helidon/grpc/examples/basics/Server.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package io.helidon.grpc.examples.basics;
1818

19-
import io.helidon.common.LogConfig;
2019
import io.helidon.config.Config;
2120
import io.helidon.grpc.examples.common.GreetService;
2221
import io.helidon.grpc.examples.common.GreetServiceJava;
@@ -25,6 +24,7 @@
2524
import io.helidon.grpc.server.GrpcServer;
2625
import io.helidon.grpc.server.GrpcServerConfiguration;
2726
import io.helidon.health.checks.HealthChecks;
27+
import io.helidon.logging.common.LogConfig;
2828
import io.helidon.reactive.health.HealthSupport;
2929
import io.helidon.reactive.webserver.Routing;
3030
import io.helidon.reactive.webserver.WebServer;

examples/grpc/metrics/src/main/java/io/helidon/grpc/examples/metrics/Server.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616

1717
package io.helidon.grpc.examples.metrics;
1818

19-
import io.helidon.common.LogConfig;
2019
import io.helidon.config.Config;
2120
import io.helidon.grpc.examples.common.GreetService;
2221
import io.helidon.grpc.examples.common.StringService;
2322
import io.helidon.grpc.metrics.GrpcMetrics;
2423
import io.helidon.grpc.server.GrpcRouting;
2524
import io.helidon.grpc.server.GrpcServer;
2625
import io.helidon.grpc.server.GrpcServerConfiguration;
26+
import io.helidon.logging.common.LogConfig;
2727
import io.helidon.metrics.serviceapi.MetricsSupport;
2828
import io.helidon.reactive.webserver.Routing;
2929
import io.helidon.reactive.webserver.WebServer;

examples/grpc/opentracing/src/main/java/io/helidon/grpc/examples/opentracing/ZipkinExampleMain.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package io.helidon.grpc.examples.opentracing;
1818

19-
import io.helidon.common.LogConfig;
2019
import io.helidon.config.Config;
2120
import io.helidon.grpc.examples.common.GreetService;
2221
import io.helidon.grpc.examples.common.StringService;
@@ -25,6 +24,7 @@
2524
import io.helidon.grpc.server.GrpcServerConfiguration;
2625
import io.helidon.grpc.server.GrpcTracingConfig;
2726
import io.helidon.grpc.server.ServerRequestAttribute;
27+
import io.helidon.logging.common.LogConfig;
2828
import io.helidon.tracing.Tracer;
2929
import io.helidon.tracing.TracerBuilder;
3030

examples/grpc/security-abac/src/main/java/io/helidon/grpc/examples/security/abac/AbacServer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2019, 2020 Oracle and/or its affiliates.
2+
* Copyright (c) 2019, 2022 Oracle and/or its affiliates.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -19,12 +19,12 @@
1919
import java.time.DayOfWeek;
2020
import java.time.LocalTime;
2121

22-
import io.helidon.common.LogConfig;
2322
import io.helidon.grpc.examples.common.StringService;
2423
import io.helidon.grpc.server.GrpcRouting;
2524
import io.helidon.grpc.server.GrpcServer;
2625
import io.helidon.grpc.server.GrpcServerConfiguration;
2726
import io.helidon.grpc.server.ServiceDescriptor;
27+
import io.helidon.logging.common.LogConfig;
2828
import io.helidon.security.Security;
2929
import io.helidon.security.SubjectType;
3030
import io.helidon.security.abac.policy.PolicyValidator;

examples/grpc/security-abac/src/main/java/io/helidon/grpc/examples/security/abac/AbacServerFromConfig.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2019, 2020 Oracle and/or its affiliates.
2+
* Copyright (c) 2019, 2022 Oracle and/or its affiliates.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,12 +16,12 @@
1616

1717
package io.helidon.grpc.examples.security.abac;
1818

19-
import io.helidon.common.LogConfig;
2019
import io.helidon.config.Config;
2120
import io.helidon.grpc.examples.common.StringService;
2221
import io.helidon.grpc.server.GrpcRouting;
2322
import io.helidon.grpc.server.GrpcServer;
2423
import io.helidon.grpc.server.GrpcServerConfiguration;
24+
import io.helidon.logging.common.LogConfig;
2525
import io.helidon.security.Security;
2626
import io.helidon.security.integration.grpc.GrpcSecurity;
2727

examples/grpc/security-outbound/src/main/java/io/helidon/grpc/examples/security/outbound/SecureServer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import java.util.Optional;
2020

21-
import io.helidon.common.LogConfig;
2221
import io.helidon.common.context.Context;
2322
import io.helidon.common.http.Http;
2423
import io.helidon.config.Config;
@@ -32,6 +31,7 @@
3231
import io.helidon.grpc.server.GrpcServerConfiguration;
3332
import io.helidon.grpc.server.GrpcService;
3433
import io.helidon.grpc.server.ServiceDescriptor;
34+
import io.helidon.logging.common.LogConfig;
3535
import io.helidon.reactive.webclient.WebClient;
3636
import io.helidon.reactive.webclient.WebClientResponse;
3737
import io.helidon.reactive.webclient.security.WebClientSecurity;

0 commit comments

Comments
 (0)