From 7c87c866e381a7c6cedf114c1a58877c6053e45a Mon Sep 17 00:00:00 2001 From: Tomas Langer Date: Thu, 1 Sep 2022 17:08:26 +0200 Subject: [PATCH 1/2] Logging refactoring - LogConfig for any logging framework - Moved from common to logging - Simple integration with System.Logger for log4j and slf4j --- CHANGELOG.md | 8 +- .../src/main/resources/logging.properties | 2 +- .../main/archetype/se/common/common-se.xml | 2 +- .../resources/logging.properties.mustache | 2 +- .../helidon/common/HelidonConsoleHandler.java | 77 ---------------- .../helidon-common/reflect-config.json | 7 -- config/config/pom.xml | 4 + dependencies/pom.xml | 16 +++- docs/mp/guides/mp-tutorial.adoc | 2 +- .../java/io/helidon/examples/cors/Main.java | 2 +- .../dbclient/jdbc/JdbcExampleMain.java | 2 +- .../jdbc/src/main/java/module-info.java | 2 + .../dbclient/mongo/MongoDbExampleMain.java | 2 +- .../mongodb/src/main/java/module-info.java | 2 + .../dbclient/pokemons/PokemonMain.java | 2 +- .../pokemons/src/main/java/module-info.java | 2 + .../io/helidon/service/employee/Main.java | 2 +- .../helidon/grpc/examples/basics/Server.java | 2 +- .../helidon/grpc/examples/metrics/Server.java | 2 +- .../opentracing/ZipkinExampleMain.java | 2 +- .../examples/security/abac/AbacServer.java | 4 +- .../security/abac/AbacServerFromConfig.java | 4 +- .../security/outbound/SecureServer.java | 2 +- .../grpc/examples/security/SecureServer.java | 4 +- .../helidon/examples/micrometer/se/Main.java | 2 +- .../microstream/greetings/se/Main.java | 2 +- .../examples/integrations/neo4j/se/Main.java | 2 +- .../oci/atp/reactive/OciAtpMain.java | 2 +- .../telemetry/reactive/OciMetricsMain.java | 2 +- .../reactive/OciObjectStorageMain.java | 2 +- .../oci/vault/reactive/OciVaultMain.java | 2 +- .../vault/hcp/reactive/ReactiveVaultMain.java | 2 +- examples/logging/jul/README.md | 4 +- examples/logging/jul/pom.xml | 4 - .../io/helidon/examples/logging/jul/Main.java | 2 +- .../helidon/examples/logging/log4j/Main.java | 19 ++-- .../logging/logback-aot/logback-runtime.xml | 4 +- .../examples/logging/logback/aot/Main.java | 8 +- examples/logging/slf4j/pom.xml | 4 - .../helidon/examples/logging/slf4j/Main.java | 14 +-- .../examples/media/multipart/Main.java | 2 +- .../helidon/examples/messaging/se/Main.java | 2 +- .../examples/metrics/exemplar/Main.java | 2 +- .../examples/metrics/filtering/se/Main.java | 2 +- .../examples/se/httpstatuscount/Main.java | 2 +- .../src/main/resources/logging.properties | 2 +- .../io/helidon/examples/metrics/kpi/Main.java | 2 +- .../src/main/resources/logging.properties | 2 +- .../helidon/examples/nima/echo/EchoMain.java | 2 +- .../examples/nima/observe/ObserveMain.java | 2 +- .../nima/protocols/ProtocolsMain.java | 2 +- .../standalone/StandaloneQuickstartMain.java | 2 +- .../nima/quickstart/QuickstartMain.java | 2 +- .../examples/nima/tracing/TracingMain.java | 2 +- .../io/helidon/examples/openapi/Main.java | 2 +- .../helidon/examples/quickstart/se/Main.java | 2 +- .../examples/quickstart/se/MainTest.java | 2 +- .../helidon/examples/quickstart/se/Main.java | 2 +- .../basic/BasicExampleBuilderMain.java | 2 +- .../basic/BasicExampleConfigMain.java | 2 +- .../examples/idcs/IdcsBuilderMain.java | 2 +- .../security/examples/idcs/IdcsMain.java | 2 +- .../security/vaults/VaultsExampleMain.java | 2 +- .../digest/DigestExampleBuilderMain.java | 2 +- .../digest/DigestExampleConfigMain.java | 2 +- .../io/helidon/demo/todos/backend/Main.java | 2 +- .../io/helidon/demo/todos/frontend/Main.java | 2 +- .../examples/translator/backend/Main.java | 2 +- .../examples/translator/frontend/Main.java | 2 +- .../examples/faulttolerance/Main.java | 2 +- .../webserver/examples/jersey/Main.java | 2 +- .../examples/webserver/multiport/Main.java | 2 +- .../webserver/examples/opentracing/Main.java | 2 +- .../examples/webserver/threadpool/Main.java | 2 +- .../reactive/webserver/examples/tls/Main.java | 2 +- .../examples/tutorial/CommentServiceTest.java | 2 +- .../grpc/client/PojoServiceClientIT.java | 9 +- .../grpc/client/ProtoGrpcServiceClientIT.java | 4 +- .../io/helidon/grpc/metrics/MetricsIT.java | 2 +- .../io/helidon/grpc/server/ContextIT.java | 4 +- .../java/io/helidon/grpc/server/SslIT.java | 4 +- .../io/helidon/grpc/server/TracingIT.java | 2 +- .../extension/HelidonReflectionFeature.java | 2 +- .../src/main/java/module-info.java | 2 + .../io/helidon/logging/common/LogConfig.java | 88 +++++++++++++++++++ .../logging/common/spi/LoggingProvider.java | 35 ++++++++ logging/common/src/main/java/module-info.java | 2 +- .../io/helidon/logging/jul/JulProvider.java | 47 +++++----- logging/jul/src/main/java/module-info.java | 3 +- .../helidon-logging-jul/resource-config.json | 7 ++ .../io/helidon/logging/jul/JulMdcTest.java | 4 +- logging/log4j/pom.xml | 4 + .../helidon/logging/log4j/Log4jProvider.java | 38 ++++++++ logging/log4j/src/main/java/module-info.java | 3 +- logging/slf4j/pom.xml | 4 + .../helidon/logging/slf4j/Slf4jProvider.java | 38 ++++++++ logging/slf4j/src/main/java/module-info.java | 5 +- .../helidon-logging-slf4j/reflect-config.json | 2 +- .../java/io/helidon/lra/coordinator/Main.java | 2 +- .../server/src/main/java/module-info.java | 1 + .../cdi/BuildTimeInitializer.java | 2 +- .../cdi/HelidonContainerImpl.java | 2 +- .../cdi/src/main/java/module-info.java | 1 + .../test/resources/logging-test.properties | 2 +- .../nima/faulttolerance/BulkheadTest.java | 2 +- .../src/main/java/io/helidon/nima/Nima.java | 2 +- nima/nima/src/main/java/module-info.java | 1 + .../HelidonRoutingJunitExtension.java | 2 +- .../HelidonServerJunitExtension.java | 2 +- .../webserver/src/main/java/module-info.java | 3 + .../helidon/nima/tests/benchmark/h2/Main.java | 2 +- .../nima/tests/benchmark/jmh/HttpJmhTest.java | 2 +- .../techempower/TechEmpowerMain.java | 2 +- .../nima/webserver/cors/AbstractCorsTest.java | 2 +- .../io/helidon/nima/webserver/WebServer.java | 2 +- .../webserver/src/main/java/module-info.java | 1 + .../reactive/faulttolerance/BulkheadTest.java | 2 +- .../reactive/webclient/OrderOfWritesTest.java | 5 +- .../reactive/webserver/http2/test/H2Test.java | 2 +- .../http2/src/test/java/module-info.java | 7 +- .../test/resources/logging-test.properties | 2 +- .../webserver/jersey/JerseyExampleMain.java | 2 +- .../reactive/webserver/NettyWebServer.java | 46 ++++++---- .../reactive/webserver/KeepAliveTest.java | 2 +- .../webserver/KeepAliveV2ApiTest.java | 2 +- .../reactive/webserver/ReasonPhraseTest.java | 2 +- .../webserver/TestHttpParsingDefaults.java | 2 +- .../websocket/test/UpgradeFailureTest.java | 2 +- .../webserver/websocket/test/WSTest.java | 2 +- .../websocket/src/test/java/module-info.java | 1 + .../integration/grpc/OutboundSecurityIT.java | 2 +- .../grpc/SecurityFromConfigIT.java | 4 +- .../grpc/ServiceAndMethodLevelSecurityIT.java | 4 +- .../helidon/tests/apps/bookstore/mp/Main.java | 4 +- .../src/main/java/module-info.java | 4 +- .../helidon/tests/apps/bookstore/se/Main.java | 2 +- .../src/main/java/module-info.java | 2 + .../io/helidon/tests/configprofile/Main.java | 2 +- .../jaxrs/subresource/MpSubResourceTest.java | 4 +- .../integration/dbclient/appl/ApplMain.java | 2 +- .../jpa/appl/test/LifeCycleExtension.java | 9 +- .../connectors/kafka/AbstractKafkaTest.java | 2 +- .../grpc/metrics/MetricsTest.java | 2 +- .../grpc/server/AnnotatedServiceTest.java | 2 +- tests/integration/native-image/nima-1/pom.xml | 4 + .../nativeimage/nima1/Nima1Main.java | 2 +- .../integration/nativeimage/se1/Se1Main.java | 2 +- .../tools/client/TestsLifeCycleExtension.java | 2 +- .../integration/tools/example/ServerMain.java | 2 +- .../vault/hcp/reactive/ReactiveVaultMain.java | 2 +- .../integration/webserver/upgrade/Main.java | 2 +- .../upgrade/src/main/java/module-info.java | 3 + .../src/main/resources/logging.properties | 2 +- .../test/resources/logging-test.properties | 2 +- 154 files changed, 480 insertions(+), 312 deletions(-) delete mode 100644 common/common/src/main/java/io/helidon/common/HelidonConsoleHandler.java delete mode 100644 common/common/src/main/resources/META-INF/native-image/io.helidon/helidon-common/reflect-config.json create mode 100644 logging/common/src/main/java/io/helidon/logging/common/LogConfig.java create mode 100644 logging/common/src/main/java/io/helidon/logging/common/spi/LoggingProvider.java rename common/common/src/main/java/io/helidon/common/LogConfig.java => logging/jul/src/main/java/io/helidon/logging/jul/JulProvider.java (83%) create mode 100644 logging/jul/src/main/resources/META-INF/native-image/io.helidon.logging/helidon-logging-jul/resource-config.json create mode 100644 logging/log4j/src/main/java/io/helidon/logging/log4j/Log4jProvider.java create mode 100644 logging/slf4j/src/main/java/io/helidon/logging/slf4j/Slf4jProvider.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 82f0d6faf88..703ace188b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,12 +11,16 @@ For Helidon 2.x releases please see [Helidon 2.x CHANGELOG.md](https://github.co For Helidon 1.x releases please see [Helidon 1.x CHANGELOG.md](https://github.com/oracle/helidon/blob/helidon-1.x/CHANGELOG.md) -## [4.0.0-ALPHA-1] - +## [4.0.0] 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. +## [4.0.0-ALPHA-1] + ### Notable Changes +- `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 +- `HelidonConsoleHandler` is now available only in `helidon-logging-jul` module +- `sfl4j` upgraded to version 2.0.0 to support `System.Logger` - Java 19 early access (with Loom support) as the minimal Java version - Using System.Logger instead of java util logging (incremental change) - `HelidonServiceLoader` is now part of `helidon-common` module diff --git a/archetypes/helidon/src/main/archetype/mp/common/files/src/main/resources/logging.properties b/archetypes/helidon/src/main/archetype/mp/common/files/src/main/resources/logging.properties index 9b9c343156c..84ffafb502d 100644 --- a/archetypes/helidon/src/main/archetype/mp/common/files/src/main/resources/logging.properties +++ b/archetypes/helidon/src/main/archetype/mp/common/files/src/main/resources/logging.properties @@ -3,7 +3,7 @@ # For more information see $JAVA_HOME/jre/lib/logging.properties # Send messages to the console -handlers=io.helidon.common.HelidonConsoleHandler +handlers=io.helidon.logging.jul.HelidonConsoleHandler # HelidonConsoleHandler uses a SimpleFormatter subclass that replaces "!thread!" with the current thread 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 diff --git a/archetypes/helidon/src/main/archetype/se/common/common-se.xml b/archetypes/helidon/src/main/archetype/se/common/common-se.xml index 04c2858d762..feba1db339e 100644 --- a/archetypes/helidon/src/main/archetype/se/common/common-se.xml +++ b/archetypes/helidon/src/main/archetype/se/common/common-se.xml @@ -51,7 +51,7 @@ - io.helidon.common.LogConfig + io.helidon.logging.common.LogConfig io.helidon.common.reactive.Single io.helidon.config.Config io.helidon.reactive.webserver.Routing diff --git a/archetypes/helidon/src/main/archetype/se/common/files/src/main/resources/logging.properties.mustache b/archetypes/helidon/src/main/archetype/se/common/files/src/main/resources/logging.properties.mustache index 940e2a2c0de..579c5fd9587 100644 --- a/archetypes/helidon/src/main/archetype/se/common/files/src/main/resources/logging.properties.mustache +++ b/archetypes/helidon/src/main/archetype/se/common/files/src/main/resources/logging.properties.mustache @@ -2,7 +2,7 @@ # For more information see $JAVA_HOME/jre/lib/logging.properties # Send messages to the console -handlers=io.helidon.common.HelidonConsoleHandler +handlers=io.helidon.logging.jul.HelidonConsoleHandler # HelidonConsoleHandler uses a SimpleFormatter subclass that replaces "!thread!" with the current thread 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 diff --git a/common/common/src/main/java/io/helidon/common/HelidonConsoleHandler.java b/common/common/src/main/java/io/helidon/common/HelidonConsoleHandler.java deleted file mode 100644 index 61be285cc65..00000000000 --- a/common/common/src/main/java/io/helidon/common/HelidonConsoleHandler.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. - * - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - */ - -package io.helidon.common; - -import java.util.logging.Level; -import java.util.logging.LogRecord; -import java.util.logging.SimpleFormatter; -import java.util.logging.StreamHandler; -import java.util.regex.Pattern; - -/** - * A {@link StreamHandler} that writes to {@link System#out standard out} and uses a {@link ThreadFormatter} for formatting. - * Sets the level to {@link Level#ALL} so that level filtering is performed solely by the loggers. - * - * @deprecated use io.helidon.logging.jul.HelidonConsoleHandler from helidon-logging-jul module instead - */ -@Deprecated(since = "2.1.1") -public class HelidonConsoleHandler extends StreamHandler { - - /** - * Creates a new {@link HelidonConsoleHandler} configured with: - * . - */ - public HelidonConsoleHandler() { - setOutputStream(System.out); - setLevel(Level.ALL); // Handlers should not filter, loggers should - setFormatter(new ThreadFormatter()); - // we need to decide how to handle all of our examples and templates, before warning users - /* - System.out.println("You are using deprecated logging handler -> io.helidon.common.HelidonConsoleHandler " - + "Please use helidon-logging-jul module and change your handler to " - + "io.helidon.logging.jul.HelidonConsoleHandler"); - */ - } - - @Override - public void publish(LogRecord record) { - super.publish(record); - flush(); - } - - @Override - public void close() { - flush(); - } - - /** - * A {@link SimpleFormatter} that replaces all occurrences of {@code "!thread!"} with the current thread. - */ - public static class ThreadFormatter extends SimpleFormatter { - private static final Pattern THREAD_PATTERN = Pattern.compile("!thread!"); - - @Override - public String format(LogRecord record) { - final String message = super.format(record); - return THREAD_PATTERN.matcher(message).replaceAll(Thread.currentThread().toString()); - } - } -} diff --git a/common/common/src/main/resources/META-INF/native-image/io.helidon/helidon-common/reflect-config.json b/common/common/src/main/resources/META-INF/native-image/io.helidon/helidon-common/reflect-config.json deleted file mode 100644 index da8cce6af14..00000000000 --- a/common/common/src/main/resources/META-INF/native-image/io.helidon/helidon-common/reflect-config.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "name": "io.helidon.common.HelidonConsoleHandler", - "allDeclaredConstructors": true, - "allPublicMethods": true - } -] diff --git a/config/config/pom.xml b/config/config/pom.xml index c5aba5841dd..053cde2f98d 100644 --- a/config/config/pom.xml +++ b/config/config/pom.xml @@ -50,6 +50,10 @@ io.helidon.common helidon-common-media-type + + io.helidon.logging + helidon-logging-jul + io.helidon.config helidon-config-metadata-processor diff --git a/dependencies/pom.xml b/dependencies/pom.xml index 54102e14bcf..91b64b81edd 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -95,8 +95,8 @@ 5.11.1.202105131744-r 5.7.0 2.8.1 - 2.17.1 - 1.2.10 + 2.18.0 + 1.4.0 2.6.2 2.10 1.6.6 @@ -139,7 +139,7 @@ 1.0.2 42.4.1 0.9.0 - 1.7.32 + 2.0.0 2.1.16 1.30 1.4.2 @@ -776,6 +776,11 @@ slf4j-api ${version.lib.slf4j} + + org.slf4j + slf4j-jdk-platform-logging + ${version.lib.slf4j} + org.slf4j slf4j-jdk14 @@ -786,6 +791,11 @@ log4j-api ${version.lib.log4j} + + org.apache.logging.log4j + log4j-jpl + ${version.lib.log4j} + io.smallrye smallrye-open-api-core diff --git a/docs/mp/guides/mp-tutorial.adoc b/docs/mp/guides/mp-tutorial.adoc index 8cb72cd4a01..146b83f9ff3 100644 --- a/docs/mp/guides/mp-tutorial.adoc +++ b/docs/mp/guides/mp-tutorial.adoc @@ -636,7 +636,7 @@ Create a `logging.properties` file in `src/main/resources` with .Example logging.properties file ---- # Send messages to the console -handlers=io.helidon.common.HelidonConsoleHandler # <1> +handlers=io.helidon.logging.jul.HelidonConsoleHandler # <1> # HelidonConsoleHandler uses a SimpleFormatter subclass that replaces "!thread!" with the current thread 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> diff --git a/examples/cors/src/main/java/io/helidon/examples/cors/Main.java b/examples/cors/src/main/java/io/helidon/examples/cors/Main.java index 92220a831c7..fdfad948e36 100644 --- a/examples/cors/src/main/java/io/helidon/examples/cors/Main.java +++ b/examples/cors/src/main/java/io/helidon/examples/cors/Main.java @@ -19,10 +19,10 @@ import java.io.IOException; import java.util.logging.Logger; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.media.jsonp.JsonpSupport; diff --git a/examples/dbclient/jdbc/src/main/java/io/helidon/examples/dbclient/jdbc/JdbcExampleMain.java b/examples/dbclient/jdbc/src/main/java/io/helidon/examples/dbclient/jdbc/JdbcExampleMain.java index 737694b1c0b..7cfd4ca73b9 100644 --- a/examples/dbclient/jdbc/src/main/java/io/helidon/examples/dbclient/jdbc/JdbcExampleMain.java +++ b/examples/dbclient/jdbc/src/main/java/io/helidon/examples/dbclient/jdbc/JdbcExampleMain.java @@ -16,8 +16,8 @@ package io.helidon.examples.dbclient.jdbc; -import io.helidon.common.LogConfig; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.dbclient.DbClient; import io.helidon.reactive.dbclient.health.DbClientHealthCheck; diff --git a/examples/dbclient/jdbc/src/main/java/module-info.java b/examples/dbclient/jdbc/src/main/java/module-info.java index d5a31a43d94..6cc330d2475 100644 --- a/examples/dbclient/jdbc/src/main/java/module-info.java +++ b/examples/dbclient/jdbc/src/main/java/module-info.java @@ -28,4 +28,6 @@ requires io.helidon.metrics.serviceapi; requires io.helidon.tracing; requires io.helidon.examples.dbclient.common; + requires io.helidon.logging.common; + requires io.helidon.logging.jul; } diff --git a/examples/dbclient/mongodb/src/main/java/io/helidon/examples/dbclient/mongo/MongoDbExampleMain.java b/examples/dbclient/mongodb/src/main/java/io/helidon/examples/dbclient/mongo/MongoDbExampleMain.java index 1c40b7a3562..4b069490683 100644 --- a/examples/dbclient/mongodb/src/main/java/io/helidon/examples/dbclient/mongo/MongoDbExampleMain.java +++ b/examples/dbclient/mongodb/src/main/java/io/helidon/examples/dbclient/mongo/MongoDbExampleMain.java @@ -16,8 +16,8 @@ package io.helidon.examples.dbclient.mongo; -import io.helidon.common.LogConfig; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.dbclient.DbClient; import io.helidon.reactive.dbclient.DbStatementType; diff --git a/examples/dbclient/mongodb/src/main/java/module-info.java b/examples/dbclient/mongodb/src/main/java/module-info.java index 013ded906df..4b6b1251e53 100644 --- a/examples/dbclient/mongodb/src/main/java/module-info.java +++ b/examples/dbclient/mongodb/src/main/java/module-info.java @@ -31,4 +31,6 @@ requires io.helidon.examples.dbclient.common; requires io.helidon.reactive.dbclient.metrics; requires io.helidon.reactive.dbclient.tracing; + requires io.helidon.logging.common; + requires io.helidon.logging.jul; } diff --git a/examples/dbclient/pokemons/src/main/java/io/helidon/examples/dbclient/pokemons/PokemonMain.java b/examples/dbclient/pokemons/src/main/java/io/helidon/examples/dbclient/pokemons/PokemonMain.java index d82ff7d52f6..6f6b67c33c2 100644 --- a/examples/dbclient/pokemons/src/main/java/io/helidon/examples/dbclient/pokemons/PokemonMain.java +++ b/examples/dbclient/pokemons/src/main/java/io/helidon/examples/dbclient/pokemons/PokemonMain.java @@ -16,9 +16,9 @@ package io.helidon.examples.dbclient.pokemons; -import io.helidon.common.LogConfig; import io.helidon.config.Config; import io.helidon.config.ConfigSources; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.dbclient.DbClient; import io.helidon.reactive.dbclient.health.DbClientHealthCheck; diff --git a/examples/dbclient/pokemons/src/main/java/module-info.java b/examples/dbclient/pokemons/src/main/java/module-info.java index d3e0e9a3ff2..128afd07e2f 100644 --- a/examples/dbclient/pokemons/src/main/java/module-info.java +++ b/examples/dbclient/pokemons/src/main/java/module-info.java @@ -32,6 +32,8 @@ requires io.helidon.tracing; requires io.helidon.reactive.dbclient; requires io.helidon.reactive.webserver; + requires io.helidon.logging.common; + requires io.helidon.logging.jul; provides DbMapperProvider with io.helidon.examples.dbclient.pokemons.PokemonMapperProvider; diff --git a/examples/employee-app/src/main/java/io/helidon/service/employee/Main.java b/examples/employee-app/src/main/java/io/helidon/service/employee/Main.java index e62c4c87259..46f337ca3b6 100644 --- a/examples/employee-app/src/main/java/io/helidon/service/employee/Main.java +++ b/examples/employee-app/src/main/java/io/helidon/service/employee/Main.java @@ -16,10 +16,10 @@ package io.helidon.service.employee; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.media.jsonb.JsonbSupport; diff --git a/examples/grpc/basics/src/main/java/io/helidon/grpc/examples/basics/Server.java b/examples/grpc/basics/src/main/java/io/helidon/grpc/examples/basics/Server.java index 381af7ae5c4..a42eba1aefc 100644 --- a/examples/grpc/basics/src/main/java/io/helidon/grpc/examples/basics/Server.java +++ b/examples/grpc/basics/src/main/java/io/helidon/grpc/examples/basics/Server.java @@ -16,7 +16,6 @@ package io.helidon.grpc.examples.basics; -import io.helidon.common.LogConfig; import io.helidon.config.Config; import io.helidon.grpc.examples.common.GreetService; import io.helidon.grpc.examples.common.GreetServiceJava; @@ -25,6 +24,7 @@ import io.helidon.grpc.server.GrpcServer; import io.helidon.grpc.server.GrpcServerConfiguration; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; diff --git a/examples/grpc/metrics/src/main/java/io/helidon/grpc/examples/metrics/Server.java b/examples/grpc/metrics/src/main/java/io/helidon/grpc/examples/metrics/Server.java index ee5307b477b..880013cf2e2 100644 --- a/examples/grpc/metrics/src/main/java/io/helidon/grpc/examples/metrics/Server.java +++ b/examples/grpc/metrics/src/main/java/io/helidon/grpc/examples/metrics/Server.java @@ -16,7 +16,6 @@ package io.helidon.grpc.examples.metrics; -import io.helidon.common.LogConfig; import io.helidon.config.Config; import io.helidon.grpc.examples.common.GreetService; import io.helidon.grpc.examples.common.StringService; @@ -24,6 +23,7 @@ import io.helidon.grpc.server.GrpcRouting; import io.helidon.grpc.server.GrpcServer; import io.helidon.grpc.server.GrpcServerConfiguration; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; diff --git a/examples/grpc/opentracing/src/main/java/io/helidon/grpc/examples/opentracing/ZipkinExampleMain.java b/examples/grpc/opentracing/src/main/java/io/helidon/grpc/examples/opentracing/ZipkinExampleMain.java index 7b211b3175e..09e02d38020 100644 --- a/examples/grpc/opentracing/src/main/java/io/helidon/grpc/examples/opentracing/ZipkinExampleMain.java +++ b/examples/grpc/opentracing/src/main/java/io/helidon/grpc/examples/opentracing/ZipkinExampleMain.java @@ -16,7 +16,6 @@ package io.helidon.grpc.examples.opentracing; -import io.helidon.common.LogConfig; import io.helidon.config.Config; import io.helidon.grpc.examples.common.GreetService; import io.helidon.grpc.examples.common.StringService; @@ -25,6 +24,7 @@ import io.helidon.grpc.server.GrpcServerConfiguration; import io.helidon.grpc.server.GrpcTracingConfig; import io.helidon.grpc.server.ServerRequestAttribute; +import io.helidon.logging.common.LogConfig; import io.helidon.tracing.Tracer; import io.helidon.tracing.TracerBuilder; diff --git a/examples/grpc/security-abac/src/main/java/io/helidon/grpc/examples/security/abac/AbacServer.java b/examples/grpc/security-abac/src/main/java/io/helidon/grpc/examples/security/abac/AbacServer.java index a5d3374cba1..0a2489a4c0b 100644 --- a/examples/grpc/security-abac/src/main/java/io/helidon/grpc/examples/security/abac/AbacServer.java +++ b/examples/grpc/security-abac/src/main/java/io/helidon/grpc/examples/security/abac/AbacServer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. + * Copyright (c) 2019, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,12 +19,12 @@ import java.time.DayOfWeek; import java.time.LocalTime; -import io.helidon.common.LogConfig; import io.helidon.grpc.examples.common.StringService; import io.helidon.grpc.server.GrpcRouting; import io.helidon.grpc.server.GrpcServer; import io.helidon.grpc.server.GrpcServerConfiguration; import io.helidon.grpc.server.ServiceDescriptor; +import io.helidon.logging.common.LogConfig; import io.helidon.security.Security; import io.helidon.security.SubjectType; import io.helidon.security.abac.policy.PolicyValidator; diff --git a/examples/grpc/security-abac/src/main/java/io/helidon/grpc/examples/security/abac/AbacServerFromConfig.java b/examples/grpc/security-abac/src/main/java/io/helidon/grpc/examples/security/abac/AbacServerFromConfig.java index 500560da33f..cc29b802c33 100644 --- a/examples/grpc/security-abac/src/main/java/io/helidon/grpc/examples/security/abac/AbacServerFromConfig.java +++ b/examples/grpc/security-abac/src/main/java/io/helidon/grpc/examples/security/abac/AbacServerFromConfig.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. + * Copyright (c) 2019, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,12 +16,12 @@ package io.helidon.grpc.examples.security.abac; -import io.helidon.common.LogConfig; import io.helidon.config.Config; import io.helidon.grpc.examples.common.StringService; import io.helidon.grpc.server.GrpcRouting; import io.helidon.grpc.server.GrpcServer; import io.helidon.grpc.server.GrpcServerConfiguration; +import io.helidon.logging.common.LogConfig; import io.helidon.security.Security; import io.helidon.security.integration.grpc.GrpcSecurity; diff --git a/examples/grpc/security-outbound/src/main/java/io/helidon/grpc/examples/security/outbound/SecureServer.java b/examples/grpc/security-outbound/src/main/java/io/helidon/grpc/examples/security/outbound/SecureServer.java index 35dfeedde58..b52c9131add 100644 --- a/examples/grpc/security-outbound/src/main/java/io/helidon/grpc/examples/security/outbound/SecureServer.java +++ b/examples/grpc/security-outbound/src/main/java/io/helidon/grpc/examples/security/outbound/SecureServer.java @@ -18,7 +18,6 @@ import java.util.Optional; -import io.helidon.common.LogConfig; import io.helidon.common.context.Context; import io.helidon.common.http.Http; import io.helidon.config.Config; @@ -32,6 +31,7 @@ import io.helidon.grpc.server.GrpcServerConfiguration; import io.helidon.grpc.server.GrpcService; import io.helidon.grpc.server.ServiceDescriptor; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webclient.WebClient; import io.helidon.reactive.webclient.WebClientResponse; import io.helidon.reactive.webclient.security.WebClientSecurity; diff --git a/examples/grpc/security/src/main/java/io/helidon/grpc/examples/security/SecureServer.java b/examples/grpc/security/src/main/java/io/helidon/grpc/examples/security/SecureServer.java index 1bf9f84a627..562d411d3c8 100644 --- a/examples/grpc/security/src/main/java/io/helidon/grpc/examples/security/SecureServer.java +++ b/examples/grpc/security/src/main/java/io/helidon/grpc/examples/security/SecureServer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. + * Copyright (c) 2019, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ package io.helidon.grpc.examples.security; -import io.helidon.common.LogConfig; import io.helidon.config.Config; import io.helidon.grpc.examples.common.GreetService; import io.helidon.grpc.examples.common.StringService; @@ -24,6 +23,7 @@ import io.helidon.grpc.server.GrpcServer; import io.helidon.grpc.server.GrpcServerConfiguration; import io.helidon.grpc.server.ServiceDescriptor; +import io.helidon.logging.common.LogConfig; import io.helidon.security.Security; import io.helidon.security.integration.grpc.GrpcSecurity; import io.helidon.security.providers.httpauth.HttpBasicAuthProvider; diff --git a/examples/integrations/micrometer/se/src/main/java/io/helidon/examples/micrometer/se/Main.java b/examples/integrations/micrometer/se/src/main/java/io/helidon/examples/micrometer/se/Main.java index 5add5b93f02..dee9c7279b7 100644 --- a/examples/integrations/micrometer/se/src/main/java/io/helidon/examples/micrometer/se/Main.java +++ b/examples/integrations/micrometer/se/src/main/java/io/helidon/examples/micrometer/se/Main.java @@ -16,10 +16,10 @@ package io.helidon.examples.micrometer.se; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.integrations.micrometer.MicrometerSupport; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.media.jsonp.JsonpSupport; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; diff --git a/examples/integrations/microstream/greetings-se/src/main/java/io/helidon/examples/integrations/microstream/greetings/se/Main.java b/examples/integrations/microstream/greetings-se/src/main/java/io/helidon/examples/integrations/microstream/greetings/se/Main.java index 7f30f4e33ca..1893299004c 100644 --- a/examples/integrations/microstream/greetings-se/src/main/java/io/helidon/examples/integrations/microstream/greetings/se/Main.java +++ b/examples/integrations/microstream/greetings-se/src/main/java/io/helidon/examples/integrations/microstream/greetings/se/Main.java @@ -18,10 +18,10 @@ import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.config.ClasspathConfigSource; import io.helidon.config.Config; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.media.jsonp.JsonpSupport; diff --git a/examples/integrations/neo4j/neo4j-se/src/main/java/io/helidon/examples/integrations/neo4j/se/Main.java b/examples/integrations/neo4j/neo4j-se/src/main/java/io/helidon/examples/integrations/neo4j/se/Main.java index d6e6d53cf7c..282a977b4a1 100644 --- a/examples/integrations/neo4j/neo4j-se/src/main/java/io/helidon/examples/integrations/neo4j/se/Main.java +++ b/examples/integrations/neo4j/neo4j-se/src/main/java/io/helidon/examples/integrations/neo4j/se/Main.java @@ -20,7 +20,6 @@ import java.io.InputStream; import java.util.logging.LogManager; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.examples.integrations.neo4j.se.domain.MovieRepository; @@ -28,6 +27,7 @@ import io.helidon.integrations.neo4j.Neo4j; import io.helidon.integrations.neo4j.health.Neo4jHealthCheck; import io.helidon.integrations.neo4j.metrics.Neo4jMetricsSupport; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.media.jsonb.JsonbSupport; diff --git a/examples/integrations/oci/atp-reactive/src/main/java/io/helidon/examples/integrations/oci/atp/reactive/OciAtpMain.java b/examples/integrations/oci/atp-reactive/src/main/java/io/helidon/examples/integrations/oci/atp/reactive/OciAtpMain.java index 574bb5fc906..91057ba8ed0 100644 --- a/examples/integrations/oci/atp-reactive/src/main/java/io/helidon/examples/integrations/oci/atp/reactive/OciAtpMain.java +++ b/examples/integrations/oci/atp-reactive/src/main/java/io/helidon/examples/integrations/oci/atp/reactive/OciAtpMain.java @@ -18,7 +18,7 @@ import java.io.IOException; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.config.Config; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; diff --git a/examples/integrations/oci/metrics-reactive/src/main/java/io/helidon/examples/integrations/oci/telemetry/reactive/OciMetricsMain.java b/examples/integrations/oci/metrics-reactive/src/main/java/io/helidon/examples/integrations/oci/telemetry/reactive/OciMetricsMain.java index 400edcd731a..a7073137da8 100644 --- a/examples/integrations/oci/metrics-reactive/src/main/java/io/helidon/examples/integrations/oci/telemetry/reactive/OciMetricsMain.java +++ b/examples/integrations/oci/metrics-reactive/src/main/java/io/helidon/examples/integrations/oci/telemetry/reactive/OciMetricsMain.java @@ -24,7 +24,7 @@ import java.util.Map; import java.util.concurrent.CountDownLatch; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.config.Config; import com.oracle.bmc.ConfigFileReader; diff --git a/examples/integrations/oci/objectstorage-reactive/src/main/java/io/helidon/examples/integrations/oci/objecstorage/reactive/OciObjectStorageMain.java b/examples/integrations/oci/objectstorage-reactive/src/main/java/io/helidon/examples/integrations/oci/objecstorage/reactive/OciObjectStorageMain.java index 605f1c30d0c..4abb8893af3 100644 --- a/examples/integrations/oci/objectstorage-reactive/src/main/java/io/helidon/examples/integrations/oci/objecstorage/reactive/OciObjectStorageMain.java +++ b/examples/integrations/oci/objectstorage-reactive/src/main/java/io/helidon/examples/integrations/oci/objecstorage/reactive/OciObjectStorageMain.java @@ -16,7 +16,7 @@ package io.helidon.examples.integrations.oci.objecstorage.reactive; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.config.Config; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; diff --git a/examples/integrations/oci/vault-reactive/src/main/java/io/helidon/examples/integrations/oci/vault/reactive/OciVaultMain.java b/examples/integrations/oci/vault-reactive/src/main/java/io/helidon/examples/integrations/oci/vault/reactive/OciVaultMain.java index 80dbda868ce..51581058603 100644 --- a/examples/integrations/oci/vault-reactive/src/main/java/io/helidon/examples/integrations/oci/vault/reactive/OciVaultMain.java +++ b/examples/integrations/oci/vault-reactive/src/main/java/io/helidon/examples/integrations/oci/vault/reactive/OciVaultMain.java @@ -18,7 +18,7 @@ import java.io.IOException; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.config.Config; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; diff --git a/examples/integrations/vault/hcp-reactive/src/main/java/io/helidon/examples/integrations/vault/hcp/reactive/ReactiveVaultMain.java b/examples/integrations/vault/hcp-reactive/src/main/java/io/helidon/examples/integrations/vault/hcp/reactive/ReactiveVaultMain.java index 4e06a1c63c8..3870fcf62bf 100644 --- a/examples/integrations/vault/hcp-reactive/src/main/java/io/helidon/examples/integrations/vault/hcp/reactive/ReactiveVaultMain.java +++ b/examples/integrations/vault/hcp-reactive/src/main/java/io/helidon/examples/integrations/vault/hcp/reactive/ReactiveVaultMain.java @@ -18,7 +18,6 @@ import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.CompletionAwaitable; import io.helidon.config.Config; import io.helidon.integrations.vault.Vault; @@ -27,6 +26,7 @@ import io.helidon.integrations.vault.secrets.kv2.Kv2SecretsRx; import io.helidon.integrations.vault.secrets.transit.TransitSecretsRx; import io.helidon.integrations.vault.sys.SysRx; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; diff --git a/examples/logging/jul/README.md b/examples/logging/jul/README.md index 4aacd8033b0..3ebb7f96140 100644 --- a/examples/logging/jul/README.md +++ b/examples/logging/jul/README.md @@ -20,7 +20,7 @@ java -jar target/helidon-examples-logging-jul.jar Expected output should be similar to the following: ```text -2020.11.19 15:37:28 INFO io.helidon.common.LogConfig Thread[main,5,main]: Logging at initialization configured using classpath: /logging.properties "" +2020.11.19 15:37:28 INFO io.helidon.logging.common.LogConfig Thread[main,5,main]: Logging at initialization configured using classpath: /logging.properties "" 2020.11.19 15:37:28 INFO io.helidon.examples.logging.jul.Main Thread[main,5,main]: Starting up "startup" 2020.11.19 15:37:28 INFO io.helidon.examples.logging.jul.Main Thread[pool-1-thread-1,5,main]: Running on another thread "propagated" 2020.11.19 15:37:28 INFO io.helidon.common.HelidonFeatures Thread[features-thread,5,main]: Helidon SE 2.2.0 features: [Config, WebServer] "" @@ -44,7 +44,7 @@ Run from command line: Expected output should be similar to the following: ```text -2020.11.19 15:38:14 INFO io.helidon.common.LogConfig Thread[main,5,main]: Logging at runtime configured using classpath: /logging.properties "" +2020.11.19 15:38:14 INFO io.helidon.logging.common.LogConfig Thread[main,5,main]: Logging at runtime configured using classpath: /logging.properties "" 2020.11.19 15:38:14 INFO io.helidon.examples.logging.jul.Main Thread[main,5,main]: Starting up "startup" 2020.11.19 15:38:14 INFO io.helidon.examples.logging.jul.Main Thread[pool-1-thread-1,5,main]: Running on another thread "propagated" 2020.11.19 15:38:14 INFO io.helidon.common.HelidonFeatures Thread[features-thread,5,main]: Helidon SE 2.2.0 features: [Config, WebServer] "" diff --git a/examples/logging/jul/pom.xml b/examples/logging/jul/pom.xml index 7462a4f454e..035318af6ac 100644 --- a/examples/logging/jul/pom.xml +++ b/examples/logging/jul/pom.xml @@ -44,10 +44,6 @@ io.helidon.reactive.webserver helidon-reactive-webserver - - io.helidon.logging - helidon-logging-jul - diff --git a/examples/logging/jul/src/main/java/io/helidon/examples/logging/jul/Main.java b/examples/logging/jul/src/main/java/io/helidon/examples/logging/jul/Main.java index 2e3a2a90166..5a9b065264f 100644 --- a/examples/logging/jul/src/main/java/io/helidon/examples/logging/jul/Main.java +++ b/examples/logging/jul/src/main/java/io/helidon/examples/logging/jul/Main.java @@ -22,10 +22,10 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Logger; -import io.helidon.common.LogConfig; import io.helidon.common.context.Context; import io.helidon.common.context.Contexts; import io.helidon.logging.common.HelidonMdc; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; diff --git a/examples/logging/log4j/src/main/java/io/helidon/examples/logging/log4j/Main.java b/examples/logging/log4j/src/main/java/io/helidon/examples/logging/log4j/Main.java index 5c9a1cb3ed5..df0346c320a 100644 --- a/examples/logging/log4j/src/main/java/io/helidon/examples/logging/log4j/Main.java +++ b/examples/logging/log4j/src/main/java/io/helidon/examples/logging/log4j/Main.java @@ -24,6 +24,7 @@ import io.helidon.common.context.Context; import io.helidon.common.context.Contexts; import io.helidon.logging.common.HelidonMdc; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; @@ -42,12 +43,7 @@ * You would need to use JUL or slf4j to have Helidon logs combined with application logs. */ public final class Main { - static { - // replace JUL log manager with Log4j log manager, so we log all to it - System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager"); - } - - private static java.util.logging.Logger julLogger; + private static System.Logger systemLogger; private static Logger logger; private Main() { @@ -61,10 +57,11 @@ private Main() { public static void main(String[] args) { // file based logging configuration does not work // with native image! - configureLogging(); + configureLog4j(); + LogConfig.configureRuntime(); // get logger after configuration - logger = LogManager.getLogger(Main.class.getName()); - julLogger = java.util.logging.Logger.getLogger(Main.class.getName()); + logger = LogManager.getLogger(Main.class); + systemLogger = System.getLogger(Main.class.getName()); // the Helidon context is used to propagate MDC across threads // if running within Helidon WebServer, you do not need to runInContext, as that is already @@ -88,7 +85,7 @@ public static void main(String[] args) { private static void logging() { HelidonMdc.set("name", "startup"); logger.info("Starting up"); - julLogger.info("Using JUL logger"); + systemLogger.log(System.Logger.Level.INFO, "Using System logger"); // now let's see propagation across executor service boundary, we can also use Log4j's ThreadContext ThreadContext.put("name", "propagated"); @@ -108,7 +105,7 @@ private static void log() { logger.info("Running on another thread"); } - private static void configureLogging() { + private static void configureLog4j() { // configure log4j final var builder = ConfigurationBuilderFactory.newConfigurationBuilder(); builder.setConfigurationName("root"); diff --git a/examples/logging/logback-aot/logback-runtime.xml b/examples/logging/logback-aot/logback-runtime.xml index af7e825f273..c700ab33a24 100644 --- a/examples/logging/logback-aot/logback-runtime.xml +++ b/examples/logging/logback-aot/logback-runtime.xml @@ -1,5 +1,5 @@ - + diff --git a/examples/logging/logback-aot/src/main/java/io/helidon/examples/logging/logback/aot/Main.java b/examples/logging/logback-aot/src/main/java/io/helidon/examples/logging/logback/aot/Main.java index a9462a4c1f8..470b18c764b 100644 --- a/examples/logging/logback-aot/src/main/java/io/helidon/examples/logging/logback/aot/Main.java +++ b/examples/logging/logback-aot/src/main/java/io/helidon/examples/logging/logback/aot/Main.java @@ -35,14 +35,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; -import org.slf4j.bridge.SLF4JBridgeHandler; /** * Main class of the example, runnable from command line. */ public final class Main { private static final Logger LOGGER = LoggerFactory.getLogger(Main.class); - private static final java.util.logging.Logger JUL_LOGGER = java.util.logging.Logger.getLogger(Main.class.getName()); + private static final System.Logger SYSTEM_LOGGER = System.getLogger(Main.class.getName()); private Main() { } @@ -82,9 +81,6 @@ private static void setupLogging() { location = (location == null) ? "logback-runtime.xml" : location; // we cannot use anything that starts threads at build time, must re-configure here resetLogging(location); - - SLF4JBridgeHandler.removeHandlersForRootLogger(); - SLF4JBridgeHandler.install(); } private static void resetLogging(String location) { @@ -117,7 +113,7 @@ private static void resetLogging(String location, LoggerContext loggerFactory) { private static void logging() { HelidonMdc.set("name", "startup"); LOGGER.info("Starting up"); - JUL_LOGGER.info("Using JUL logger"); + SYSTEM_LOGGER.log(System.Logger.Level.INFO, "Using System logger"); // now let's see propagation across executor service boundary, we can also use Log4j's ThreadContext MDC.put("name", "propagated"); diff --git a/examples/logging/slf4j/pom.xml b/examples/logging/slf4j/pom.xml index a70dd8ce0a8..ff72e053140 100644 --- a/examples/logging/slf4j/pom.xml +++ b/examples/logging/slf4j/pom.xml @@ -52,10 +52,6 @@ org.slf4j slf4j-api - - org.slf4j - jul-to-slf4j - ch.qos.logback logback-classic diff --git a/examples/logging/slf4j/src/main/java/io/helidon/examples/logging/slf4j/Main.java b/examples/logging/slf4j/src/main/java/io/helidon/examples/logging/slf4j/Main.java index ab8d775dc67..c38d1ab793d 100644 --- a/examples/logging/slf4j/src/main/java/io/helidon/examples/logging/slf4j/Main.java +++ b/examples/logging/slf4j/src/main/java/io/helidon/examples/logging/slf4j/Main.java @@ -24,20 +24,20 @@ import io.helidon.common.context.Context; import io.helidon.common.context.Contexts; import io.helidon.logging.common.HelidonMdc; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; -import org.slf4j.bridge.SLF4JBridgeHandler; /** * Main class of the example, runnable from command line. */ public final class Main { private static final Logger LOGGER = LoggerFactory.getLogger(Main.class); - private static final java.util.logging.Logger JUL_LOGGER = java.util.logging.Logger.getLogger(Main.class.getName()); + private static final System.Logger SYSTEM_LOGGER = System.getLogger(Main.class.getName()); private Main() { } @@ -48,8 +48,7 @@ private Main() { * @param args not used */ public static void main(String[] args) { - // use slf4j for JUL as well - setupLogging(); + LogConfig.configureRuntime(); // the Helidon context is used to propagate MDC across threads // if running within Helidon WebServer, you do not need to runInContext, as that is already @@ -70,15 +69,10 @@ public static void main(String[] args) { .await(10, TimeUnit.SECONDS); } - private static void setupLogging() { - SLF4JBridgeHandler.removeHandlersForRootLogger(); - SLF4JBridgeHandler.install(); - } - private static void logging() { HelidonMdc.set("name", "startup"); LOGGER.info("Starting up"); - JUL_LOGGER.info("Using JUL logger"); + SYSTEM_LOGGER.log(System.Logger.Level.INFO, "Using System logger"); // now let's see propagation across executor service boundary, we can also use Log4j's ThreadContext MDC.put("name", "propagated"); diff --git a/examples/media/multipart/src/main/java/io/helidon/examples/media/multipart/Main.java b/examples/media/multipart/src/main/java/io/helidon/examples/media/multipart/Main.java index a3b0f8576dd..ea3b709f20b 100644 --- a/examples/media/multipart/src/main/java/io/helidon/examples/media/multipart/Main.java +++ b/examples/media/multipart/src/main/java/io/helidon/examples/media/multipart/Main.java @@ -15,9 +15,9 @@ */ package io.helidon.examples.media.multipart; -import io.helidon.common.LogConfig; import io.helidon.common.http.Http; import io.helidon.common.reactive.Single; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.media.jsonp.JsonpSupport; import io.helidon.reactive.media.multipart.MultiPartSupport; import io.helidon.reactive.webserver.Routing; diff --git a/examples/messaging/kafka-websocket-se/src/main/java/io/helidon/examples/messaging/se/Main.java b/examples/messaging/kafka-websocket-se/src/main/java/io/helidon/examples/messaging/se/Main.java index 8a72690a11e..af51ac2df5b 100644 --- a/examples/messaging/kafka-websocket-se/src/main/java/io/helidon/examples/messaging/se/Main.java +++ b/examples/messaging/kafka-websocket-se/src/main/java/io/helidon/examples/messaging/se/Main.java @@ -16,8 +16,8 @@ package io.helidon.examples.messaging.se; -import io.helidon.common.LogConfig; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.WebServer; import io.helidon.reactive.webserver.staticcontent.StaticContentSupport; import io.helidon.reactive.webserver.websocket.WebSocketRouting; diff --git a/examples/metrics/exemplar/src/main/java/io/helidon/examples/metrics/exemplar/Main.java b/examples/metrics/exemplar/src/main/java/io/helidon/examples/metrics/exemplar/Main.java index 8f781f924ca..b36717fdef7 100644 --- a/examples/metrics/exemplar/src/main/java/io/helidon/examples/metrics/exemplar/Main.java +++ b/examples/metrics/exemplar/src/main/java/io/helidon/examples/metrics/exemplar/Main.java @@ -16,9 +16,9 @@ package io.helidon.examples.metrics.exemplar; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.media.jsonp.JsonpSupport; import io.helidon.reactive.webserver.Routing; diff --git a/examples/metrics/filtering/se/src/main/java/io/helidon/examples/metrics/filtering/se/Main.java b/examples/metrics/filtering/se/src/main/java/io/helidon/examples/metrics/filtering/se/Main.java index 4b28d48d186..31e764b452a 100644 --- a/examples/metrics/filtering/se/src/main/java/io/helidon/examples/metrics/filtering/se/Main.java +++ b/examples/metrics/filtering/se/src/main/java/io/helidon/examples/metrics/filtering/se/Main.java @@ -16,9 +16,9 @@ package io.helidon.examples.metrics.filtering.se; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.api.MetricsSettings; import io.helidon.metrics.api.RegistryFactory; import io.helidon.metrics.api.RegistryFilterSettings; diff --git a/examples/metrics/http-status-count-se/src/main/java/io/helidon/examples/se/httpstatuscount/Main.java b/examples/metrics/http-status-count-se/src/main/java/io/helidon/examples/se/httpstatuscount/Main.java index 69484df9078..af121077968 100644 --- a/examples/metrics/http-status-count-se/src/main/java/io/helidon/examples/se/httpstatuscount/Main.java +++ b/examples/metrics/http-status-count-se/src/main/java/io/helidon/examples/se/httpstatuscount/Main.java @@ -15,10 +15,10 @@ */ package io.helidon.examples.se.httpstatuscount; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.MetricsSupport; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.media.jsonp.JsonpSupport; diff --git a/examples/metrics/http-status-count-se/src/main/resources/logging.properties b/examples/metrics/http-status-count-se/src/main/resources/logging.properties index 609ef96a85e..f13b9c604d7 100644 --- a/examples/metrics/http-status-count-se/src/main/resources/logging.properties +++ b/examples/metrics/http-status-count-se/src/main/resources/logging.properties @@ -18,7 +18,7 @@ # For more information see $JAVA_HOME/jre/lib/logging.properties # Send messages to the console -handlers=io.helidon.common.HelidonConsoleHandler +handlers=io.helidon.logging.jul.HelidonConsoleHandler # HelidonConsoleHandler uses a SimpleFormatter subclass that replaces "!thread!" with the current thread 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 diff --git a/examples/metrics/kpi/src/main/java/io/helidon/examples/metrics/kpi/Main.java b/examples/metrics/kpi/src/main/java/io/helidon/examples/metrics/kpi/Main.java index 7293a672069..a75fc005cfd 100644 --- a/examples/metrics/kpi/src/main/java/io/helidon/examples/metrics/kpi/Main.java +++ b/examples/metrics/kpi/src/main/java/io/helidon/examples/metrics/kpi/Main.java @@ -16,9 +16,9 @@ package io.helidon.examples.metrics.kpi; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.api.KeyPerformanceIndicatorMetricsSettings; import io.helidon.metrics.api.MetricsSettings; import io.helidon.metrics.serviceapi.MetricsSupport; diff --git a/examples/microprofile/http-status-count-mp/src/main/resources/logging.properties b/examples/microprofile/http-status-count-mp/src/main/resources/logging.properties index 7c7d73e0966..c3362c0141b 100644 --- a/examples/microprofile/http-status-count-mp/src/main/resources/logging.properties +++ b/examples/microprofile/http-status-count-mp/src/main/resources/logging.properties @@ -17,7 +17,7 @@ # For more information see $JAVA_HOME/jre/lib/logging.properties # Send messages to the console -handlers=io.helidon.common.HelidonConsoleHandler +handlers=io.helidon.logging.jul.HelidonConsoleHandler # HelidonConsoleHandler uses a SimpleFormatter subclass that replaces "!thread!" with the current thread 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 diff --git a/examples/nima/echo/src/main/java/io/helidon/examples/nima/echo/EchoMain.java b/examples/nima/echo/src/main/java/io/helidon/examples/nima/echo/EchoMain.java index c7f263527c3..b6e2f97617a 100644 --- a/examples/nima/echo/src/main/java/io/helidon/examples/nima/echo/EchoMain.java +++ b/examples/nima/echo/src/main/java/io/helidon/examples/nima/echo/EchoMain.java @@ -20,11 +20,11 @@ import java.io.OutputStream; import java.util.Set; -import io.helidon.common.LogConfig; import io.helidon.common.http.Headers; import io.helidon.common.http.Http; import io.helidon.common.parameters.Parameters; import io.helidon.common.uri.UriQuery; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.webserver.WebServer; import io.helidon.nima.webserver.http.RoutedPath; import io.helidon.nima.webserver.http.ServerRequest; diff --git a/examples/nima/observe/src/main/java/io/helidon/examples/nima/observe/ObserveMain.java b/examples/nima/observe/src/main/java/io/helidon/examples/nima/observe/ObserveMain.java index 35a3dd2208b..da8f4420b40 100644 --- a/examples/nima/observe/src/main/java/io/helidon/examples/nima/observe/ObserveMain.java +++ b/examples/nima/observe/src/main/java/io/helidon/examples/nima/observe/ObserveMain.java @@ -16,7 +16,7 @@ package io.helidon.examples.nima.observe; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.observe.ObserveSupport; import io.helidon.nima.webserver.WebServer; import io.helidon.nima.webserver.http.HttpRouting; diff --git a/examples/nima/protocols/src/main/java/io/helidon/examples/nima/protocols/ProtocolsMain.java b/examples/nima/protocols/src/main/java/io/helidon/examples/nima/protocols/ProtocolsMain.java index 8c2fb2ede3e..28fa5c34bcc 100644 --- a/examples/nima/protocols/src/main/java/io/helidon/examples/nima/protocols/ProtocolsMain.java +++ b/examples/nima/protocols/src/main/java/io/helidon/examples/nima/protocols/ProtocolsMain.java @@ -19,10 +19,10 @@ import java.nio.charset.StandardCharsets; import java.util.Locale; -import io.helidon.common.LogConfig; import io.helidon.common.configurable.Resource; import io.helidon.common.pki.KeyConfig; import io.helidon.examples.nima.grpc.strings.Strings; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.common.tls.Tls; import io.helidon.nima.grpc.webserver.GrpcRouting; import io.helidon.nima.http2.webserver.Http2Route; diff --git a/examples/nima/quickstart-standalone/src/main/java/io/helidon/examples/nima/quickstart/standalone/StandaloneQuickstartMain.java b/examples/nima/quickstart-standalone/src/main/java/io/helidon/examples/nima/quickstart/standalone/StandaloneQuickstartMain.java index 33838deadf1..4ff55691c11 100644 --- a/examples/nima/quickstart-standalone/src/main/java/io/helidon/examples/nima/quickstart/standalone/StandaloneQuickstartMain.java +++ b/examples/nima/quickstart-standalone/src/main/java/io/helidon/examples/nima/quickstart/standalone/StandaloneQuickstartMain.java @@ -16,10 +16,10 @@ package io.helidon.examples.nima.quickstart.standalone; -import io.helidon.common.LogConfig; import io.helidon.health.checks.DeadlockHealthCheck; import io.helidon.health.checks.DiskSpaceHealthCheck; import io.helidon.health.checks.HeapMemoryHealthCheck; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.observe.ObserveSupport; import io.helidon.nima.observe.health.HealthObserveProvider; import io.helidon.nima.observe.health.HealthService; diff --git a/examples/nima/quickstart/src/main/java/io/helidon/examples/nima/quickstart/QuickstartMain.java b/examples/nima/quickstart/src/main/java/io/helidon/examples/nima/quickstart/QuickstartMain.java index a1f4eac0a0e..41e9ebd3364 100644 --- a/examples/nima/quickstart/src/main/java/io/helidon/examples/nima/quickstart/QuickstartMain.java +++ b/examples/nima/quickstart/src/main/java/io/helidon/examples/nima/quickstart/QuickstartMain.java @@ -16,10 +16,10 @@ package io.helidon.examples.nima.quickstart; -import io.helidon.common.LogConfig; import io.helidon.health.checks.DeadlockHealthCheck; import io.helidon.health.checks.DiskSpaceHealthCheck; import io.helidon.health.checks.HeapMemoryHealthCheck; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.observe.ObserveSupport; import io.helidon.nima.observe.health.HealthObserveProvider; import io.helidon.nima.observe.health.HealthService; diff --git a/examples/nima/tracing/src/main/java/io/helidon/examples/nima/tracing/TracingMain.java b/examples/nima/tracing/src/main/java/io/helidon/examples/nima/tracing/TracingMain.java index c7f9694c3d1..ca4b0842d10 100644 --- a/examples/nima/tracing/src/main/java/io/helidon/examples/nima/tracing/TracingMain.java +++ b/examples/nima/tracing/src/main/java/io/helidon/examples/nima/tracing/TracingMain.java @@ -16,7 +16,7 @@ package io.helidon.examples.nima.tracing; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.http2.webserver.Http2Route; import io.helidon.nima.webserver.WebServer; import io.helidon.nima.webserver.http.Handler; diff --git a/examples/openapi/src/main/java/io/helidon/examples/openapi/Main.java b/examples/openapi/src/main/java/io/helidon/examples/openapi/Main.java index 30d6c332588..3d134fc5758 100644 --- a/examples/openapi/src/main/java/io/helidon/examples/openapi/Main.java +++ b/examples/openapi/src/main/java/io/helidon/examples/openapi/Main.java @@ -16,10 +16,10 @@ package io.helidon.examples.openapi; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.openapi.OpenAPISupport; import io.helidon.reactive.health.HealthSupport; diff --git a/examples/quickstarts/helidon-quickstart-se/src/main/java/io/helidon/examples/quickstart/se/Main.java b/examples/quickstarts/helidon-quickstart-se/src/main/java/io/helidon/examples/quickstart/se/Main.java index d4ef219ea16..37adac19648 100644 --- a/examples/quickstarts/helidon-quickstart-se/src/main/java/io/helidon/examples/quickstart/se/Main.java +++ b/examples/quickstarts/helidon-quickstart-se/src/main/java/io/helidon/examples/quickstart/se/Main.java @@ -16,10 +16,10 @@ package io.helidon.examples.quickstart.se; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.media.jsonp.JsonpSupport; diff --git a/examples/quickstarts/helidon-quickstart-se/src/test/java/io/helidon/examples/quickstart/se/MainTest.java b/examples/quickstarts/helidon-quickstart-se/src/test/java/io/helidon/examples/quickstart/se/MainTest.java index 09ecdde5b16..e45f4d04de6 100644 --- a/examples/quickstarts/helidon-quickstart-se/src/test/java/io/helidon/examples/quickstart/se/MainTest.java +++ b/examples/quickstarts/helidon-quickstart-se/src/test/java/io/helidon/examples/quickstart/se/MainTest.java @@ -19,8 +19,8 @@ import java.util.Collections; import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.common.http.Http; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.media.jsonp.JsonpSupport; import io.helidon.reactive.webclient.WebClient; import io.helidon.reactive.webclient.WebClientResponse; diff --git a/examples/quickstarts/helidon-standalone-quickstart-se/src/main/java/io/helidon/examples/quickstart/se/Main.java b/examples/quickstarts/helidon-standalone-quickstart-se/src/main/java/io/helidon/examples/quickstart/se/Main.java index d4ef219ea16..37adac19648 100644 --- a/examples/quickstarts/helidon-standalone-quickstart-se/src/main/java/io/helidon/examples/quickstart/se/Main.java +++ b/examples/quickstarts/helidon-standalone-quickstart-se/src/main/java/io/helidon/examples/quickstart/se/Main.java @@ -16,10 +16,10 @@ package io.helidon.examples.quickstart.se; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.media.jsonp.JsonpSupport; diff --git a/examples/security/basic-auth-with-static-content/src/main/java/io/helidon/security/examples/webserver/basic/BasicExampleBuilderMain.java b/examples/security/basic-auth-with-static-content/src/main/java/io/helidon/security/examples/webserver/basic/BasicExampleBuilderMain.java index 354d1d7ec10..efb26162a6a 100644 --- a/examples/security/basic-auth-with-static-content/src/main/java/io/helidon/security/examples/webserver/basic/BasicExampleBuilderMain.java +++ b/examples/security/basic-auth-with-static-content/src/main/java/io/helidon/security/examples/webserver/basic/BasicExampleBuilderMain.java @@ -23,8 +23,8 @@ import java.util.Set; import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.common.http.HttpMediaType; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import io.helidon.reactive.webserver.staticcontent.StaticContentSupport; diff --git a/examples/security/basic-auth-with-static-content/src/main/java/io/helidon/security/examples/webserver/basic/BasicExampleConfigMain.java b/examples/security/basic-auth-with-static-content/src/main/java/io/helidon/security/examples/webserver/basic/BasicExampleConfigMain.java index 04e9cf1ded7..9ac4efbe861 100644 --- a/examples/security/basic-auth-with-static-content/src/main/java/io/helidon/security/examples/webserver/basic/BasicExampleConfigMain.java +++ b/examples/security/basic-auth-with-static-content/src/main/java/io/helidon/security/examples/webserver/basic/BasicExampleConfigMain.java @@ -19,9 +19,9 @@ import java.util.Optional; import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.common.http.HttpMediaType; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import io.helidon.reactive.webserver.staticcontent.StaticContentSupport; diff --git a/examples/security/idcs-login/src/main/java/io/helidon/security/examples/idcs/IdcsBuilderMain.java b/examples/security/idcs-login/src/main/java/io/helidon/security/examples/idcs/IdcsBuilderMain.java index 6fe6d154767..e5348f4030d 100644 --- a/examples/security/idcs-login/src/main/java/io/helidon/security/examples/idcs/IdcsBuilderMain.java +++ b/examples/security/idcs-login/src/main/java/io/helidon/security/examples/idcs/IdcsBuilderMain.java @@ -20,9 +20,9 @@ import java.net.URI; import java.util.Optional; -import io.helidon.common.LogConfig; import io.helidon.common.http.HttpMediaType; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import io.helidon.security.Security; diff --git a/examples/security/idcs-login/src/main/java/io/helidon/security/examples/idcs/IdcsMain.java b/examples/security/idcs-login/src/main/java/io/helidon/security/examples/idcs/IdcsMain.java index bb986b87c11..6ef893bf003 100644 --- a/examples/security/idcs-login/src/main/java/io/helidon/security/examples/idcs/IdcsMain.java +++ b/examples/security/idcs-login/src/main/java/io/helidon/security/examples/idcs/IdcsMain.java @@ -18,10 +18,10 @@ import java.util.Optional; -import io.helidon.common.LogConfig; import io.helidon.common.context.Contexts; import io.helidon.common.http.HttpMediaType; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import io.helidon.security.Security; diff --git a/examples/security/vaults/src/main/java/io/helidon/examples/security/vaults/VaultsExampleMain.java b/examples/security/vaults/src/main/java/io/helidon/examples/security/vaults/VaultsExampleMain.java index 5328043a853..bc6f85b3788 100644 --- a/examples/security/vaults/src/main/java/io/helidon/examples/security/vaults/VaultsExampleMain.java +++ b/examples/security/vaults/src/main/java/io/helidon/examples/security/vaults/VaultsExampleMain.java @@ -18,8 +18,8 @@ import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import io.helidon.security.Security; diff --git a/examples/security/webserver-digest-auth/src/main/java/io/helidon/security/examples/webserver/digest/DigestExampleBuilderMain.java b/examples/security/webserver-digest-auth/src/main/java/io/helidon/security/examples/webserver/digest/DigestExampleBuilderMain.java index daccd216efd..3dd11974d63 100644 --- a/examples/security/webserver-digest-auth/src/main/java/io/helidon/security/examples/webserver/digest/DigestExampleBuilderMain.java +++ b/examples/security/webserver-digest-auth/src/main/java/io/helidon/security/examples/webserver/digest/DigestExampleBuilderMain.java @@ -25,8 +25,8 @@ import java.util.Optional; import java.util.Set; -import io.helidon.common.LogConfig; import io.helidon.common.http.HttpMediaType; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import io.helidon.security.Security; diff --git a/examples/security/webserver-digest-auth/src/main/java/io/helidon/security/examples/webserver/digest/DigestExampleConfigMain.java b/examples/security/webserver-digest-auth/src/main/java/io/helidon/security/examples/webserver/digest/DigestExampleConfigMain.java index 92228b63389..26c1afcbbfe 100644 --- a/examples/security/webserver-digest-auth/src/main/java/io/helidon/security/examples/webserver/digest/DigestExampleConfigMain.java +++ b/examples/security/webserver-digest-auth/src/main/java/io/helidon/security/examples/webserver/digest/DigestExampleConfigMain.java @@ -18,9 +18,9 @@ import java.util.Optional; -import io.helidon.common.LogConfig; import io.helidon.common.http.HttpMediaType; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import io.helidon.security.SecurityContext; diff --git a/examples/todo-app/backend/src/main/java/io/helidon/demo/todos/backend/Main.java b/examples/todo-app/backend/src/main/java/io/helidon/demo/todos/backend/Main.java index 52b6102eaae..2fadfca8ff6 100644 --- a/examples/todo-app/backend/src/main/java/io/helidon/demo/todos/backend/Main.java +++ b/examples/todo-app/backend/src/main/java/io/helidon/demo/todos/backend/Main.java @@ -18,8 +18,8 @@ import java.util.List; -import io.helidon.common.LogConfig; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.microprofile.server.Server; import static io.helidon.config.ConfigSources.classpath; diff --git a/examples/todo-app/frontend/src/main/java/io/helidon/demo/todos/frontend/Main.java b/examples/todo-app/frontend/src/main/java/io/helidon/demo/todos/frontend/Main.java index ef5fce8a58a..8898c015203 100644 --- a/examples/todo-app/frontend/src/main/java/io/helidon/demo/todos/frontend/Main.java +++ b/examples/todo-app/frontend/src/main/java/io/helidon/demo/todos/frontend/Main.java @@ -20,9 +20,9 @@ import java.util.logging.Level; import java.util.logging.Logger; -import io.helidon.common.LogConfig; import io.helidon.config.Config; import io.helidon.config.FileSystemWatcher; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.media.jsonp.JsonpSupport; import io.helidon.reactive.webserver.Routing; diff --git a/examples/translator-app/backend/src/main/java/io/helidon/examples/translator/backend/Main.java b/examples/translator-app/backend/src/main/java/io/helidon/examples/translator/backend/Main.java index 4d87583e80d..c68e6cfc61a 100644 --- a/examples/translator-app/backend/src/main/java/io/helidon/examples/translator/backend/Main.java +++ b/examples/translator-app/backend/src/main/java/io/helidon/examples/translator/backend/Main.java @@ -16,10 +16,10 @@ package io.helidon.examples.translator.backend; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.config.ConfigSources; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import io.helidon.tracing.TracerBuilder; diff --git a/examples/translator-app/frontend/src/main/java/io/helidon/examples/translator/frontend/Main.java b/examples/translator-app/frontend/src/main/java/io/helidon/examples/translator/frontend/Main.java index f0e233cf38c..64cfb2e19e7 100644 --- a/examples/translator-app/frontend/src/main/java/io/helidon/examples/translator/frontend/Main.java +++ b/examples/translator-app/frontend/src/main/java/io/helidon/examples/translator/frontend/Main.java @@ -16,10 +16,10 @@ package io.helidon.examples.translator.frontend; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.config.ConfigSources; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import io.helidon.tracing.TracerBuilder; diff --git a/examples/webserver/fault-tolerance/src/main/java/io/helidon/reactive/webserver/examples/faulttolerance/Main.java b/examples/webserver/fault-tolerance/src/main/java/io/helidon/reactive/webserver/examples/faulttolerance/Main.java index cba3073083c..0f882d46e8b 100644 --- a/examples/webserver/fault-tolerance/src/main/java/io/helidon/reactive/webserver/examples/faulttolerance/Main.java +++ b/examples/webserver/fault-tolerance/src/main/java/io/helidon/reactive/webserver/examples/faulttolerance/Main.java @@ -18,9 +18,9 @@ import java.util.concurrent.TimeoutException; -import io.helidon.common.LogConfig; import io.helidon.common.http.Http; import io.helidon.common.reactive.Single; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.faulttolerance.BulkheadException; import io.helidon.reactive.faulttolerance.CircuitBreakerOpenException; import io.helidon.reactive.webserver.Routing; diff --git a/examples/webserver/jersey/src/main/java/io/helidon/reactive/webserver/examples/jersey/Main.java b/examples/webserver/jersey/src/main/java/io/helidon/reactive/webserver/examples/jersey/Main.java index 9befc5b988c..97f4f7273f2 100644 --- a/examples/webserver/jersey/src/main/java/io/helidon/reactive/webserver/examples/jersey/Main.java +++ b/examples/webserver/jersey/src/main/java/io/helidon/reactive/webserver/examples/jersey/Main.java @@ -18,7 +18,7 @@ import java.util.concurrent.CompletionStage; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import io.helidon.reactive.webserver.jersey.JerseySupport; diff --git a/examples/webserver/multiport/src/main/java/io/helidon/examples/webserver/multiport/Main.java b/examples/webserver/multiport/src/main/java/io/helidon/examples/webserver/multiport/Main.java index 692170f1da2..6891603c905 100644 --- a/examples/webserver/multiport/src/main/java/io/helidon/examples/webserver/multiport/Main.java +++ b/examples/webserver/multiport/src/main/java/io/helidon/examples/webserver/multiport/Main.java @@ -16,10 +16,10 @@ package io.helidon.examples.webserver.multiport; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.webserver.Routing; diff --git a/examples/webserver/opentracing/src/main/java/io/helidon/reactive/webserver/examples/opentracing/Main.java b/examples/webserver/opentracing/src/main/java/io/helidon/reactive/webserver/examples/opentracing/Main.java index 7e63ae5c2d4..2d825b1158f 100644 --- a/examples/webserver/opentracing/src/main/java/io/helidon/reactive/webserver/examples/opentracing/Main.java +++ b/examples/webserver/opentracing/src/main/java/io/helidon/reactive/webserver/examples/opentracing/Main.java @@ -16,9 +16,9 @@ package io.helidon.reactive.webserver.examples.opentracing; -import io.helidon.common.LogConfig; import io.helidon.config.Config; import io.helidon.config.ConfigSources; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import io.helidon.tracing.TracerBuilder; diff --git a/examples/webserver/threadpool/src/main/java/io/helidon/examples/webserver/threadpool/Main.java b/examples/webserver/threadpool/src/main/java/io/helidon/examples/webserver/threadpool/Main.java index 25d81896465..5219cca6362 100644 --- a/examples/webserver/threadpool/src/main/java/io/helidon/examples/webserver/threadpool/Main.java +++ b/examples/webserver/threadpool/src/main/java/io/helidon/examples/webserver/threadpool/Main.java @@ -16,10 +16,10 @@ package io.helidon.examples.webserver.threadpool; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.serviceapi.MetricsSupport; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.media.jsonp.JsonpSupport; diff --git a/examples/webserver/tls/src/main/java/io/helidon/reactive/webserver/examples/tls/Main.java b/examples/webserver/tls/src/main/java/io/helidon/reactive/webserver/examples/tls/Main.java index 9bd6407a845..eed53e6bf76 100644 --- a/examples/webserver/tls/src/main/java/io/helidon/reactive/webserver/examples/tls/Main.java +++ b/examples/webserver/tls/src/main/java/io/helidon/reactive/webserver/examples/tls/Main.java @@ -18,10 +18,10 @@ import java.util.concurrent.CompletionStage; -import io.helidon.common.LogConfig; import io.helidon.common.configurable.Resource; import io.helidon.common.pki.KeyConfig; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; import io.helidon.reactive.webserver.WebServerTls; diff --git a/examples/webserver/tutorial/src/test/java/io/helidon/reactive/webserver/examples/tutorial/CommentServiceTest.java b/examples/webserver/tutorial/src/test/java/io/helidon/reactive/webserver/examples/tutorial/CommentServiceTest.java index 40b4d160f00..bf0a6cfd2f3 100644 --- a/examples/webserver/tutorial/src/test/java/io/helidon/reactive/webserver/examples/tutorial/CommentServiceTest.java +++ b/examples/webserver/tutorial/src/test/java/io/helidon/reactive/webserver/examples/tutorial/CommentServiceTest.java @@ -18,9 +18,9 @@ import java.nio.charset.StandardCharsets; -import io.helidon.common.LogConfig; import io.helidon.common.http.Http; import io.helidon.common.http.HttpMediaType; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.testsupport.MediaPublisher; import io.helidon.reactive.webserver.testsupport.TestClient; diff --git a/grpc/client/src/test/java/io/helidon/grpc/client/PojoServiceClientIT.java b/grpc/client/src/test/java/io/helidon/grpc/client/PojoServiceClientIT.java index cade1c31aed..15982b08d10 100644 --- a/grpc/client/src/test/java/io/helidon/grpc/client/PojoServiceClientIT.java +++ b/grpc/client/src/test/java/io/helidon/grpc/client/PojoServiceClientIT.java @@ -23,13 +23,14 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import io.grpc.Channel; -import io.grpc.ManagedChannelBuilder; -import io.grpc.stub.StreamObserver; -import io.helidon.common.LogConfig; import io.helidon.grpc.server.GrpcRouting; import io.helidon.grpc.server.GrpcServer; import io.helidon.grpc.server.GrpcServerConfiguration; +import io.helidon.logging.common.LogConfig; + +import io.grpc.Channel; +import io.grpc.ManagedChannelBuilder; +import io.grpc.stub.StreamObserver; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; diff --git a/grpc/client/src/test/java/io/helidon/grpc/client/ProtoGrpcServiceClientIT.java b/grpc/client/src/test/java/io/helidon/grpc/client/ProtoGrpcServiceClientIT.java index 317807fbc0b..8ec695f6b14 100644 --- a/grpc/client/src/test/java/io/helidon/grpc/client/ProtoGrpcServiceClientIT.java +++ b/grpc/client/src/test/java/io/helidon/grpc/client/ProtoGrpcServiceClientIT.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2021 Oracle and/or its affiliates. + * Copyright (c) 2019, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,12 +28,12 @@ import java.util.stream.Collectors; import java.util.stream.StreamSupport; -import io.helidon.common.LogConfig; import io.helidon.grpc.client.test.StringServiceGrpc; import io.helidon.grpc.core.InterceptorPriorities; import io.helidon.grpc.server.GrpcRouting; import io.helidon.grpc.server.GrpcServer; import io.helidon.grpc.server.GrpcServerConfiguration; +import io.helidon.logging.common.LogConfig; import io.grpc.CallCredentials; import io.grpc.CallOptions; diff --git a/grpc/metrics/src/test/java/io/helidon/grpc/metrics/MetricsIT.java b/grpc/metrics/src/test/java/io/helidon/grpc/metrics/MetricsIT.java index 14d10367cfd..d207eab5638 100644 --- a/grpc/metrics/src/test/java/io/helidon/grpc/metrics/MetricsIT.java +++ b/grpc/metrics/src/test/java/io/helidon/grpc/metrics/MetricsIT.java @@ -20,13 +20,13 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Logger; -import io.helidon.common.LogConfig; import io.helidon.common.http.HttpMediaType; import io.helidon.grpc.server.GrpcRouting; import io.helidon.grpc.server.GrpcServer; import io.helidon.grpc.server.GrpcServerConfiguration; import io.helidon.grpc.server.test.Echo; import io.helidon.grpc.server.test.EchoServiceGrpc; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.MetricsSupport; import io.helidon.reactive.media.jsonp.JsonpSupport; import io.helidon.reactive.webclient.WebClient; diff --git a/grpc/server/src/test/java/io/helidon/grpc/server/ContextIT.java b/grpc/server/src/test/java/io/helidon/grpc/server/ContextIT.java index d8216b7d7ee..4087dcdd663 100644 --- a/grpc/server/src/test/java/io/helidon/grpc/server/ContextIT.java +++ b/grpc/server/src/test/java/io/helidon/grpc/server/ContextIT.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. + * Copyright (c) 2019, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,12 +20,12 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Logger; -import io.helidon.common.LogConfig; import io.helidon.common.context.Context; import io.helidon.common.context.Contexts; import io.helidon.grpc.core.ContextKeys; import io.helidon.grpc.server.test.Echo; import io.helidon.grpc.server.test.EchoServiceGrpc; +import io.helidon.logging.common.LogConfig; import io.grpc.Channel; import io.grpc.ManagedChannelBuilder; diff --git a/grpc/server/src/test/java/io/helidon/grpc/server/SslIT.java b/grpc/server/src/test/java/io/helidon/grpc/server/SslIT.java index ac6e8d2bf4f..46b9059c77d 100644 --- a/grpc/server/src/test/java/io/helidon/grpc/server/SslIT.java +++ b/grpc/server/src/test/java/io/helidon/grpc/server/SslIT.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. + * Copyright (c) 2019, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,13 +23,13 @@ import javax.net.ssl.SSLException; -import io.helidon.common.LogConfig; import io.helidon.common.configurable.Resource; import io.helidon.config.Config; import io.helidon.config.ConfigSources; import io.helidon.grpc.core.GrpcTlsDescriptor; import io.helidon.grpc.server.test.Echo; import io.helidon.grpc.server.test.EchoServiceGrpc; +import io.helidon.logging.common.LogConfig; import com.oracle.bedrock.runtime.LocalPlatform; import com.oracle.bedrock.runtime.network.AvailablePortIterator; diff --git a/grpc/server/src/test/java/io/helidon/grpc/server/TracingIT.java b/grpc/server/src/test/java/io/helidon/grpc/server/TracingIT.java index 5e5c6a9d250..87514c47a1b 100644 --- a/grpc/server/src/test/java/io/helidon/grpc/server/TracingIT.java +++ b/grpc/server/src/test/java/io/helidon/grpc/server/TracingIT.java @@ -21,10 +21,10 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Logger; -import io.helidon.common.LogConfig; import io.helidon.grpc.core.InterceptorPriorities; import io.helidon.grpc.server.test.Echo; import io.helidon.grpc.server.test.EchoServiceGrpc; +import io.helidon.logging.common.LogConfig; import io.helidon.tracing.TracerBuilder; import com.oracle.bedrock.testsupport.deferred.Eventually; diff --git a/integrations/graal/native-image-extension/src/main/java/io/helidon/integrations/graal/nativeimage/extension/HelidonReflectionFeature.java b/integrations/graal/native-image-extension/src/main/java/io/helidon/integrations/graal/nativeimage/extension/HelidonReflectionFeature.java index 63fb7ea476d..12bc3f0d4d2 100644 --- a/integrations/graal/native-image-extension/src/main/java/io/helidon/integrations/graal/nativeimage/extension/HelidonReflectionFeature.java +++ b/integrations/graal/native-image-extension/src/main/java/io/helidon/integrations/graal/nativeimage/extension/HelidonReflectionFeature.java @@ -33,9 +33,9 @@ import java.util.stream.Stream; import io.helidon.common.HelidonFeatures; -import io.helidon.common.LogConfig; import io.helidon.common.Reflected; import io.helidon.config.mp.MpConfigProviderResolver; +import io.helidon.logging.common.LogConfig; import com.oracle.svm.core.jdk.Resources; import com.oracle.svm.core.jdk.proxy.DynamicProxyRegistry; diff --git a/integrations/graal/native-image-extension/src/main/java/module-info.java b/integrations/graal/native-image-extension/src/main/java/module-info.java index 7afa0597e82..62fc60ca24e 100644 --- a/integrations/graal/native-image-extension/src/main/java/module-info.java +++ b/integrations/graal/native-image-extension/src/main/java/module-info.java @@ -18,6 +18,8 @@ */ module io.helidon.graal.nativeimage { requires io.helidon.config; + requires io.helidon.logging.common; + requires io.helidon.logging.jul; requires io.github.classgraph; requires io.helidon.config.mp; requires svm; diff --git a/logging/common/src/main/java/io/helidon/logging/common/LogConfig.java b/logging/common/src/main/java/io/helidon/logging/common/LogConfig.java new file mode 100644 index 00000000000..3b4c19cabf0 --- /dev/null +++ b/logging/common/src/main/java/io/helidon/logging/common/LogConfig.java @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2019, 2022 Oracle and/or its affiliates. + * + * 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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + */ +package io.helidon.logging.common; + +import java.util.List; +import java.util.ServiceLoader; +import java.util.concurrent.atomic.AtomicBoolean; + +import io.helidon.common.HelidonServiceLoader; +import io.helidon.common.NativeImageHelper; +import io.helidon.logging.common.spi.LoggingProvider; + +/** + * Logging configuration utility. + * This utility looks for logging provider and configures it either for initialization or for runtime. + *

+ * Initialization is done automatically at GraalVM native image build (through Helidon feature). Runtime initialization + * is done automatically when using a container (such as Helidon MP), for Helidon SE (and programmatic API) it is recommended + * to invoke {@link #configureRuntime()} as the first thing in your application, so all logs are correctly handled. + */ +public final class LogConfig { + private static final AtomicBoolean RUNTIME_CONFIGURED = new AtomicBoolean(); + private static final LoggingProvider PROVIDER; + + static { + List providers = HelidonServiceLoader.create(ServiceLoader.load(LoggingProvider.class)) + .asList(); + if (providers.isEmpty()) { + System.err.println("There is no Helidon logging implementation on classpath, skipping log configuration."); + PROVIDER = new NoOpProvider(); + } else { + PROVIDER = providers.get(0); + } + + PROVIDER.initialization(); + + if (providers.size() > 1) { + System.getLogger(LogConfig.class.getName()) + .log(System.Logger.Level.TRACE, "Multiple logging providers on classpath, using the first one: " + + PROVIDER.getClass().getName()); + } + } + + private LogConfig() { + } + + /** + * Reconfigures logging with runtime configuration if within a native image. + * See GraalVM native image support in Helidon. + */ + public static void configureRuntime() { + if (NativeImageHelper.isRuntime() && RUNTIME_CONFIGURED.compareAndSet(false, true)) { + // only do this once + PROVIDER.runTime(); + } + } + + /** + * This method is for internal use, to correctly load logging configuration at AOT build time. + */ + public static void initClass() { + // DO NOT DELETE THIS METHOD + // we need to ensure class initialization for native image by invoking this method + } + + private static final class NoOpProvider implements LoggingProvider { + @Override + public void initialization() { + } + + @Override + public void runTime() { + } + } +} diff --git a/logging/common/src/main/java/io/helidon/logging/common/spi/LoggingProvider.java b/logging/common/src/main/java/io/helidon/logging/common/spi/LoggingProvider.java new file mode 100644 index 00000000000..59224615568 --- /dev/null +++ b/logging/common/src/main/java/io/helidon/logging/common/spi/LoggingProvider.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2020, 2022 Oracle and/or its affiliates. + * + * 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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + */ +package io.helidon.logging.common.spi; + +/** + * Used by Helidon to correctly initialize logging at build time (such as when building GraalVM native image) + * and at runtime (to configure loggers). + * + * @see io.helidon.logging.common.LogConfig + */ +public interface LoggingProvider { + /** + * This is executed at static initialization, such as when building + * GraalVM native image or when starting the application. + */ + void initialization(); + + /** + * Runtime configuration, called when the application starts in GraalVM native image (not called when running on hotspot). + */ + void runTime(); +} diff --git a/logging/common/src/main/java/module-info.java b/logging/common/src/main/java/module-info.java index 592ac4815fb..fa2d03fc835 100644 --- a/logging/common/src/main/java/module-info.java +++ b/logging/common/src/main/java/module-info.java @@ -24,5 +24,5 @@ exports io.helidon.logging.common.spi; uses io.helidon.logging.common.spi.MdcProvider; - + uses io.helidon.logging.common.spi.LoggingProvider; } \ No newline at end of file diff --git a/common/common/src/main/java/io/helidon/common/LogConfig.java b/logging/jul/src/main/java/io/helidon/logging/jul/JulProvider.java similarity index 83% rename from common/common/src/main/java/io/helidon/common/LogConfig.java rename to logging/jul/src/main/java/io/helidon/logging/jul/JulProvider.java index ddc1a5deee2..44564290fb7 100644 --- a/common/common/src/main/java/io/helidon/common/LogConfig.java +++ b/logging/jul/src/main/java/io/helidon/logging/jul/JulProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. + * Copyright (c) 2019, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.helidon.common; +package io.helidon.logging.jul; import java.io.BufferedInputStream; import java.io.IOException; @@ -24,9 +24,12 @@ import java.util.logging.LogManager; import java.util.logging.Logger; +import io.helidon.common.Weight; +import io.helidon.logging.common.spi.LoggingProvider; + /** - * Logging configuration utility. - * Methods are invoked by Helidon on startup, so you do not need to explicitly configure + * JUL Logging provider. + * You do not need to explicitly configure * Java Util logging as long as a file {@code logging.properties} is on the classpath or * in the current directory, or you configure logging explicitly using System properties. * Both {@value #SYS_PROP_LOGGING_CLASS} and {@value #SYS_PROP_LOGGING_FILE} are @@ -34,28 +37,28 @@ * If you wish to configure the logging system differently, just do not include the file and/or * system properties, or set system property {@value #SYS_PROP_DISABLE_CONFIG} to {@code true}. */ -public final class LogConfig { +@Weight(1) +public class JulProvider implements LoggingProvider { private static final String TEST_LOGGING_FILE = "logging-test.properties"; private static final String LOGGING_FILE = "logging.properties"; private static final String SYS_PROP_DISABLE_CONFIG = "io.helidon.logging.config.disabled"; private static final String SYS_PROP_LOGGING_CLASS = "java.util.logging.config.class"; private static final String SYS_PROP_LOGGING_FILE = "java.util.logging.config.file"; - static { - configureLogging("initialization"); + /** + * Default constructor required by {@link java.util.ServiceLoader}. + */ + public JulProvider() { } - private LogConfig() { + @Override + public void initialization() { + configureLogging("initialization"); } - /** - * Reconfigures logging with runtime configuration if within a native image. - * See GraalVM native image support in Helidon. - */ - public static void configureRuntime() { - if (NativeImageHelper.isRuntime()) { - configureLogging("runtime"); - } + @Override + public void runTime() { + configureLogging("runtime"); } // when is either `initialization` or `runtime` @@ -91,7 +94,7 @@ private static void doConfigureLogging(String when) throws IOException { source = findAndConfigureLogging(); } - Logger.getLogger(LogConfig.class.getName()).info("Logging at " + when + " configured using " + source); + Logger.getLogger(JulProvider.class.getName()).info("Logging at " + when + " configured using " + source); } private static String findAndConfigureLogging() throws IOException { @@ -151,14 +154,6 @@ private static InputStream contextClassPath(String loggingFile, ClassLoader cl) } private static InputStream classPath(String loggingFile) { - return LogConfig.class.getResourceAsStream("/" + loggingFile); - } - - /** - * This method is for internal use, to correctly load logging configuration at AOT build time. - */ - public static void initClass() { - // DO NOT DELETE THIS METHOD - // we need to ensure class initialization for native image by invoking this method + return JulProvider.class.getResourceAsStream("/" + loggingFile); } } diff --git a/logging/jul/src/main/java/module-info.java b/logging/jul/src/main/java/module-info.java index e5bf9506300..2579fddccfc 100644 --- a/logging/jul/src/main/java/module-info.java +++ b/logging/jul/src/main/java/module-info.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. + * Copyright (c) 2020, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,4 +28,5 @@ provides io.helidon.common.context.spi.DataPropagationProvider with io.helidon.logging.jul.JulMdcPropagator; provides io.helidon.logging.common.spi.MdcProvider with io.helidon.logging.jul.JulMdcProvider; + provides io.helidon.logging.common.spi.LoggingProvider with io.helidon.logging.jul.JulProvider; } \ No newline at end of file diff --git a/logging/jul/src/main/resources/META-INF/native-image/io.helidon.logging/helidon-logging-jul/resource-config.json b/logging/jul/src/main/resources/META-INF/native-image/io.helidon.logging/helidon-logging-jul/resource-config.json new file mode 100644 index 00000000000..f86d5a86265 --- /dev/null +++ b/logging/jul/src/main/resources/META-INF/native-image/io.helidon.logging/helidon-logging-jul/resource-config.json @@ -0,0 +1,7 @@ +{ + "resources": [ + { + "pattern": "logging.properties" + } + ] +} \ No newline at end of file diff --git a/logging/jul/src/test/java/io/helidon/logging/jul/JulMdcTest.java b/logging/jul/src/test/java/io/helidon/logging/jul/JulMdcTest.java index d9421669cb3..f19ed9a7035 100644 --- a/logging/jul/src/test/java/io/helidon/logging/jul/JulMdcTest.java +++ b/logging/jul/src/test/java/io/helidon/logging/jul/JulMdcTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. + * Copyright (c) 2020, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,11 +22,11 @@ import java.util.concurrent.Executors; import java.util.logging.Logger; -import io.helidon.common.LogConfig; import io.helidon.common.context.Context; import io.helidon.common.context.Contexts; import io.helidon.common.context.ExecutorException; import io.helidon.logging.common.HelidonMdc; +import io.helidon.logging.common.LogConfig; import org.junit.jupiter.api.Test; diff --git a/logging/log4j/pom.xml b/logging/log4j/pom.xml index b971663a03a..b0bc507a33f 100644 --- a/logging/log4j/pom.xml +++ b/logging/log4j/pom.xml @@ -47,6 +47,10 @@ log4j-api provided + + org.apache.logging.log4j + log4j-jpl + org.junit.jupiter junit-jupiter-api diff --git a/logging/log4j/src/main/java/io/helidon/logging/log4j/Log4jProvider.java b/logging/log4j/src/main/java/io/helidon/logging/log4j/Log4jProvider.java new file mode 100644 index 00000000000..13a170928de --- /dev/null +++ b/logging/log4j/src/main/java/io/helidon/logging/log4j/Log4jProvider.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2022 Oracle and/or its affiliates. + * + * 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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + */ + +package io.helidon.logging.log4j; + +import io.helidon.logging.common.spi.LoggingProvider; + +import org.apache.logging.log4j.LogManager; + +/** + * Log4j logging provider. + */ +public class Log4jProvider implements LoggingProvider { + @Override + public void initialization() { + LogManager.getLogger(Log4jProvider.class) + .info("Logging initialization."); + } + + @Override + public void runTime() { + LogManager.getLogger(Log4jProvider.class) + .info("Logging runtime."); + } +} diff --git a/logging/log4j/src/main/java/module-info.java b/logging/log4j/src/main/java/module-info.java index 6bb5ad11d95..d4ce03ad3b5 100644 --- a/logging/log4j/src/main/java/module-info.java +++ b/logging/log4j/src/main/java/module-info.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. + * Copyright (c) 2020, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ exports io.helidon.logging.log4j; + provides io.helidon.logging.common.spi.LoggingProvider with io.helidon.logging.log4j.Log4jProvider; provides io.helidon.logging.common.spi.MdcProvider with io.helidon.logging.log4j.Log4jMdcProvider; provides io.helidon.common.context.spi.DataPropagationProvider with io.helidon.logging.log4j.Log4jMdcPropagator; } \ No newline at end of file diff --git a/logging/slf4j/pom.xml b/logging/slf4j/pom.xml index 84fb115e1c0..f6df2f86618 100644 --- a/logging/slf4j/pom.xml +++ b/logging/slf4j/pom.xml @@ -41,6 +41,10 @@ slf4j-api provided + + org.slf4j + slf4j-jdk-platform-logging + org.junit.jupiter junit-jupiter-api diff --git a/logging/slf4j/src/main/java/io/helidon/logging/slf4j/Slf4jProvider.java b/logging/slf4j/src/main/java/io/helidon/logging/slf4j/Slf4jProvider.java new file mode 100644 index 00000000000..a9d78858f26 --- /dev/null +++ b/logging/slf4j/src/main/java/io/helidon/logging/slf4j/Slf4jProvider.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2022 Oracle and/or its affiliates. + * + * 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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + */ + +package io.helidon.logging.slf4j; + +import io.helidon.logging.common.spi.LoggingProvider; + +import org.slf4j.LoggerFactory; + +/** + * Slf4j logging provider. + */ +public class Slf4jProvider implements LoggingProvider { + @Override + public void initialization() { + LoggerFactory.getLogger(Slf4jProvider.class) + .info("Logging initialization."); + } + + @Override + public void runTime() { + LoggerFactory.getLogger(Slf4jProvider.class) + .info("Logging runtime."); + } +} diff --git a/logging/slf4j/src/main/java/module-info.java b/logging/slf4j/src/main/java/module-info.java index f52b4a7d484..9f43eed67af 100644 --- a/logging/slf4j/src/main/java/module-info.java +++ b/logging/slf4j/src/main/java/module-info.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. + * Copyright (c) 2020, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,6 +14,8 @@ * limitations under the License. */ +import io.helidon.logging.slf4j.Slf4jProvider; + /** * Helidon Slf4j MDC module. */ @@ -25,6 +27,7 @@ exports io.helidon.logging.slf4j; + provides io.helidon.logging.common.spi.LoggingProvider with Slf4jProvider; provides io.helidon.common.context.spi.DataPropagationProvider with io.helidon.logging.slf4j.Slf4jMdcPropagator; provides io.helidon.logging.common.spi.MdcProvider with io.helidon.logging.slf4j.Slf4jMdcProvider; } \ No newline at end of file diff --git a/logging/slf4j/src/main/resources/META-INF/native-image/io.helidon.logging/helidon-logging-slf4j/reflect-config.json b/logging/slf4j/src/main/resources/META-INF/native-image/io.helidon.logging/helidon-logging-slf4j/reflect-config.json index 5d84bcea611..b6a014c6ace 100644 --- a/logging/slf4j/src/main/resources/META-INF/native-image/io.helidon.logging/helidon-logging-slf4j/reflect-config.json +++ b/logging/slf4j/src/main/resources/META-INF/native-image/io.helidon.logging/helidon-logging-slf4j/reflect-config.json @@ -15,7 +15,7 @@ "allPublicConstructors": true }, { - "name": "ch.qos.logback.core.hook.DelayingShutdownHook", + "name": "ch.qos.logback.core.hook.DefaultShutdownHook", "allPublicMethods": true, "allPublicConstructors": true }, diff --git a/lra/coordinator/server/src/main/java/io/helidon/lra/coordinator/Main.java b/lra/coordinator/server/src/main/java/io/helidon/lra/coordinator/Main.java index 889575ef009..24007ecf15d 100644 --- a/lra/coordinator/server/src/main/java/io/helidon/lra/coordinator/Main.java +++ b/lra/coordinator/server/src/main/java/io/helidon/lra/coordinator/Main.java @@ -16,10 +16,10 @@ package io.helidon.lra.coordinator; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.MetricsSupport; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.webserver.Routing; diff --git a/lra/coordinator/server/src/main/java/module-info.java b/lra/coordinator/server/src/main/java/module-info.java index 035919747b6..61ef2bb250e 100644 --- a/lra/coordinator/server/src/main/java/module-info.java +++ b/lra/coordinator/server/src/main/java/module-info.java @@ -30,4 +30,5 @@ requires io.helidon.reactive.media.jsonp; requires io.helidon.reactive.health; requires io.helidon.health.checks; + requires io.helidon.logging.common; } \ No newline at end of file diff --git a/microprofile/cdi/src/main/java/io/helidon/microprofile/cdi/BuildTimeInitializer.java b/microprofile/cdi/src/main/java/io/helidon/microprofile/cdi/BuildTimeInitializer.java index e4981ec7148..65eb64e4068 100644 --- a/microprofile/cdi/src/main/java/io/helidon/microprofile/cdi/BuildTimeInitializer.java +++ b/microprofile/cdi/src/main/java/io/helidon/microprofile/cdi/BuildTimeInitializer.java @@ -19,7 +19,7 @@ import java.util.concurrent.locks.ReentrantLock; import java.util.function.Supplier; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; /** * Holds the container singleton. diff --git a/microprofile/cdi/src/main/java/io/helidon/microprofile/cdi/HelidonContainerImpl.java b/microprofile/cdi/src/main/java/io/helidon/microprofile/cdi/HelidonContainerImpl.java index c3b73a41c19..ad0a9d77a39 100644 --- a/microprofile/cdi/src/main/java/io/helidon/microprofile/cdi/HelidonContainerImpl.java +++ b/microprofile/cdi/src/main/java/io/helidon/microprofile/cdi/HelidonContainerImpl.java @@ -33,13 +33,13 @@ import io.helidon.common.HelidonFeatures; import io.helidon.common.HelidonFlavor; -import io.helidon.common.LogConfig; import io.helidon.common.SerializationConfig; import io.helidon.common.Version; import io.helidon.common.context.Context; import io.helidon.common.context.Contexts; import io.helidon.config.mp.MpConfig; import io.helidon.config.mp.MpConfigProviderResolver; +import io.helidon.logging.common.LogConfig; import jakarta.enterprise.context.BeforeDestroyed; import jakarta.enterprise.context.Destroyed; diff --git a/microprofile/cdi/src/main/java/module-info.java b/microprofile/cdi/src/main/java/module-info.java index a25fe06fdd1..7371846ce5a 100644 --- a/microprofile/cdi/src/main/java/module-info.java +++ b/microprofile/cdi/src/main/java/module-info.java @@ -28,6 +28,7 @@ requires jakarta.cdi; requires io.helidon.common; + requires io.helidon.logging.common; requires io.helidon.config; requires io.helidon.config.mp; diff --git a/microprofile/tracing/src/test/resources/logging-test.properties b/microprofile/tracing/src/test/resources/logging-test.properties index 5e1cfb50991..04365e00ea7 100644 --- a/microprofile/tracing/src/test/resources/logging-test.properties +++ b/microprofile/tracing/src/test/resources/logging-test.properties @@ -16,7 +16,7 @@ #All attributes details -handlers=io.helidon.common.HelidonConsoleHandler +handlers=io.helidon.logging.jul.HelidonConsoleHandler 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 .level=INFO diff --git a/nima/fault-tolerance/src/test/java/io/helidon/nima/faulttolerance/BulkheadTest.java b/nima/fault-tolerance/src/test/java/io/helidon/nima/faulttolerance/BulkheadTest.java index 2f2705f9d7f..525c3b20adb 100644 --- a/nima/fault-tolerance/src/test/java/io/helidon/nima/faulttolerance/BulkheadTest.java +++ b/nima/fault-tolerance/src/test/java/io/helidon/nima/faulttolerance/BulkheadTest.java @@ -21,7 +21,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; diff --git a/nima/nima/src/main/java/io/helidon/nima/Nima.java b/nima/nima/src/main/java/io/helidon/nima/Nima.java index 313c0e56d33..ac0b1b71f20 100644 --- a/nima/nima/src/main/java/io/helidon/nima/Nima.java +++ b/nima/nima/src/main/java/io/helidon/nima/Nima.java @@ -19,8 +19,8 @@ import java.util.concurrent.atomic.AtomicReference; import io.helidon.common.LazyValue; -import io.helidon.common.LogConfig; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; /** * Application main entry point. diff --git a/nima/nima/src/main/java/module-info.java b/nima/nima/src/main/java/module-info.java index 9747e33a0e7..06e4c2c6f63 100644 --- a/nima/nima/src/main/java/module-info.java +++ b/nima/nima/src/main/java/module-info.java @@ -17,6 +17,7 @@ requires io.helidon.common; requires io.helidon.config; requires io.helidon.config.yaml; + requires io.helidon.logging.common; exports io.helidon.nima; } \ No newline at end of file diff --git a/nima/testing/junit5/webserver/src/main/java/io/helidon/nima/testing/junit5/webserver/HelidonRoutingJunitExtension.java b/nima/testing/junit5/webserver/src/main/java/io/helidon/nima/testing/junit5/webserver/HelidonRoutingJunitExtension.java index 112260c5fb0..750aa671c71 100644 --- a/nima/testing/junit5/webserver/src/main/java/io/helidon/nima/testing/junit5/webserver/HelidonRoutingJunitExtension.java +++ b/nima/testing/junit5/webserver/src/main/java/io/helidon/nima/testing/junit5/webserver/HelidonRoutingJunitExtension.java @@ -22,7 +22,7 @@ import java.util.LinkedList; import java.util.function.Consumer; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.webserver.http.HttpRouting; import io.helidon.nima.webserver.http.HttpRules; diff --git a/nima/testing/junit5/webserver/src/main/java/io/helidon/nima/testing/junit5/webserver/HelidonServerJunitExtension.java b/nima/testing/junit5/webserver/src/main/java/io/helidon/nima/testing/junit5/webserver/HelidonServerJunitExtension.java index ac066d8a9dd..6e5d88850db 100644 --- a/nima/testing/junit5/webserver/src/main/java/io/helidon/nima/testing/junit5/webserver/HelidonServerJunitExtension.java +++ b/nima/testing/junit5/webserver/src/main/java/io/helidon/nima/testing/junit5/webserver/HelidonServerJunitExtension.java @@ -25,8 +25,8 @@ import java.util.function.BiConsumer; import io.helidon.common.LazyValue; -import io.helidon.common.LogConfig; import io.helidon.common.testing.http.junit5.SocketHttpClient; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.webclient.WebClient; import io.helidon.nima.webclient.http1.Http1Client; import io.helidon.nima.webserver.ListenerConfiguration; diff --git a/nima/testing/junit5/webserver/src/main/java/module-info.java b/nima/testing/junit5/webserver/src/main/java/module-info.java index 53e2ccf36a1..6f8246b1786 100644 --- a/nima/testing/junit5/webserver/src/main/java/module-info.java +++ b/nima/testing/junit5/webserver/src/main/java/module-info.java @@ -24,8 +24,11 @@ requires transitive io.helidon.common.testing.http.junit5; requires transitive io.helidon.nima.webserver; requires transitive io.helidon.nima.webclient; + requires io.helidon.logging.common; + requires transitive org.junit.jupiter.api; requires transitive hamcrest.all; + exports io.helidon.nima.testing.junit5.webserver; } \ No newline at end of file diff --git a/nima/tests/benchmark/h2/src/main/java/io/helidon/nima/tests/benchmark/h2/Main.java b/nima/tests/benchmark/h2/src/main/java/io/helidon/nima/tests/benchmark/h2/Main.java index 86c8e384e71..bd2a82577a8 100644 --- a/nima/tests/benchmark/h2/src/main/java/io/helidon/nima/tests/benchmark/h2/Main.java +++ b/nima/tests/benchmark/h2/src/main/java/io/helidon/nima/tests/benchmark/h2/Main.java @@ -19,11 +19,11 @@ import java.nio.charset.StandardCharsets; import java.time.Duration; -import io.helidon.common.LogConfig; import io.helidon.common.configurable.Resource; import io.helidon.common.http.Http.Header; import io.helidon.common.http.Http.HeaderValue; import io.helidon.common.pki.KeyConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.common.tls.Tls; import io.helidon.nima.webserver.WebServer; import io.helidon.nima.webserver.http.Handler; diff --git a/nima/tests/benchmark/jmh/src/main/java/io/helidon/nima/tests/benchmark/jmh/HttpJmhTest.java b/nima/tests/benchmark/jmh/src/main/java/io/helidon/nima/tests/benchmark/jmh/HttpJmhTest.java index 2f957cd5904..9689d4fdaa4 100644 --- a/nima/tests/benchmark/jmh/src/main/java/io/helidon/nima/tests/benchmark/jmh/HttpJmhTest.java +++ b/nima/tests/benchmark/jmh/src/main/java/io/helidon/nima/tests/benchmark/jmh/HttpJmhTest.java @@ -24,10 +24,10 @@ import java.nio.charset.StandardCharsets; import java.time.Duration; -import io.helidon.common.LogConfig; import io.helidon.common.http.Http; import io.helidon.common.http.Http.Header; import io.helidon.common.http.Http.HeaderValue; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.webserver.WebServer; import io.helidon.nima.webserver.http.Handler; import io.helidon.nima.webserver.http.ServerRequest; diff --git a/nima/tests/benchmark/techempower/src/main/java/io/helidon/nima/tests/benchmark/techempower/TechEmpowerMain.java b/nima/tests/benchmark/techempower/src/main/java/io/helidon/nima/tests/benchmark/techempower/TechEmpowerMain.java index af5028a205b..a7bdab8f4ef 100644 --- a/nima/tests/benchmark/techempower/src/main/java/io/helidon/nima/tests/benchmark/techempower/TechEmpowerMain.java +++ b/nima/tests/benchmark/techempower/src/main/java/io/helidon/nima/tests/benchmark/techempower/TechEmpowerMain.java @@ -20,10 +20,10 @@ import java.nio.charset.StandardCharsets; import java.util.Arrays; -import io.helidon.common.LogConfig; import io.helidon.common.http.Http.Header; import io.helidon.common.http.Http.HeaderValue; import io.helidon.common.http.Http.HeaderValues; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.webserver.WebServer; import io.helidon.nima.webserver.http.Handler; import io.helidon.nima.webserver.http.HttpRules; diff --git a/nima/webserver/cors/src/test/java/io/helidon/nima/webserver/cors/AbstractCorsTest.java b/nima/webserver/cors/src/test/java/io/helidon/nima/webserver/cors/AbstractCorsTest.java index 9728c464b53..55f05c86e9f 100644 --- a/nima/webserver/cors/src/test/java/io/helidon/nima/webserver/cors/AbstractCorsTest.java +++ b/nima/webserver/cors/src/test/java/io/helidon/nima/webserver/cors/AbstractCorsTest.java @@ -15,9 +15,9 @@ */ package io.helidon.nima.webserver.cors; -import io.helidon.common.LogConfig; import io.helidon.common.http.Http; import io.helidon.common.http.Http.HeaderValues; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.webclient.ClientResponse; import io.helidon.nima.webclient.http1.Http1Client; import io.helidon.nima.webclient.http1.Http1ClientRequest; diff --git a/nima/webserver/webserver/src/main/java/io/helidon/nima/webserver/WebServer.java b/nima/webserver/webserver/src/main/java/io/helidon/nima/webserver/WebServer.java index bdfae1793b6..b79a8930bb3 100644 --- a/nima/webserver/webserver/src/main/java/io/helidon/nima/webserver/WebServer.java +++ b/nima/webserver/webserver/src/main/java/io/helidon/nima/webserver/WebServer.java @@ -25,9 +25,9 @@ import java.util.function.Consumer; import io.helidon.common.HelidonServiceLoader; -import io.helidon.common.LogConfig; import io.helidon.common.http.DirectHandler; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.common.tls.Tls; import io.helidon.nima.webserver.http.DirectHandlers; import io.helidon.nima.webserver.http.HttpRouting; diff --git a/nima/webserver/webserver/src/main/java/module-info.java b/nima/webserver/webserver/src/main/java/module-info.java index c6f02da5881..1c20d23ff8e 100644 --- a/nima/webserver/webserver/src/main/java/module-info.java +++ b/nima/webserver/webserver/src/main/java/module-info.java @@ -28,6 +28,7 @@ requires transitive io.helidon.nima.http.media; requires transitive io.helidon.nima.common.tls; requires transitive io.helidon.config; + requires io.helidon.logging.common; requires java.management; diff --git a/reactive/fault-tolerance/src/test/java/io/helidon/reactive/faulttolerance/BulkheadTest.java b/reactive/fault-tolerance/src/test/java/io/helidon/reactive/faulttolerance/BulkheadTest.java index 214677f772a..a9b12ce8f5b 100644 --- a/reactive/fault-tolerance/src/test/java/io/helidon/reactive/faulttolerance/BulkheadTest.java +++ b/reactive/fault-tolerance/src/test/java/io/helidon/reactive/faulttolerance/BulkheadTest.java @@ -25,12 +25,12 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.IntStream; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Multi; import io.helidon.common.reactive.Single; import io.helidon.config.Config; import io.helidon.config.ConfigSources; import io.helidon.config.spi.ConfigSource; +import io.helidon.logging.common.LogConfig; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; diff --git a/reactive/webclient/webclient/src/test/java/io/helidon/reactive/webclient/OrderOfWritesTest.java b/reactive/webclient/webclient/src/test/java/io/helidon/reactive/webclient/OrderOfWritesTest.java index fc15ba6bb49..6a33d367335 100644 --- a/reactive/webclient/webclient/src/test/java/io/helidon/reactive/webclient/OrderOfWritesTest.java +++ b/reactive/webclient/webclient/src/test/java/io/helidon/reactive/webclient/OrderOfWritesTest.java @@ -24,19 +24,18 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.common.http.DataChunk; import io.helidon.common.reactive.Multi; import io.helidon.common.reactive.Single; +import io.helidon.logging.common.LogConfig; +import com.sun.net.httpserver.HttpServer; import org.hamcrest.Matchers; import org.junit.jupiter.api.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertTrue; -import com.sun.net.httpserver.HttpServer; - class OrderOfWritesTest { private static final Duration TIME_OUT = Duration.ofSeconds(5); diff --git a/reactive/webserver/http2/src/test/java/io/helidon/reactive/webserver/http2/test/H2Test.java b/reactive/webserver/http2/src/test/java/io/helidon/reactive/webserver/http2/test/H2Test.java index 6fbc6dc994d..9897c946926 100644 --- a/reactive/webserver/http2/src/test/java/io/helidon/reactive/webserver/http2/test/H2Test.java +++ b/reactive/webserver/http2/src/test/java/io/helidon/reactive/webserver/http2/test/H2Test.java @@ -22,8 +22,8 @@ import java.net.http.HttpResponse; import java.time.Duration; -import io.helidon.common.LogConfig; import io.helidon.common.http.Http; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webclient.WebClient; import io.helidon.reactive.webclient.WebClientResponse; import io.helidon.reactive.webserver.Http1Route; diff --git a/reactive/webserver/http2/src/test/java/module-info.java b/reactive/webserver/http2/src/test/java/module-info.java index 993b07fe988..1f26fd03015 100644 --- a/reactive/webserver/http2/src/test/java/module-info.java +++ b/reactive/webserver/http2/src/test/java/module-info.java @@ -16,10 +16,13 @@ open module helidon.webserver.http2.test { requires io.helidon.reactive.webserver; + requires io.helidon.reactive.webserver.http2; + requires io.helidon.reactive.webclient; + requires io.helidon.logging.common; + requires java.logging; requires java.net.http; requires hamcrest.all; requires org.junit.jupiter.api; - requires io.helidon.reactive.webserver.http2; - requires io.helidon.reactive.webclient; + } \ No newline at end of file diff --git a/reactive/webserver/http2/src/test/resources/logging-test.properties b/reactive/webserver/http2/src/test/resources/logging-test.properties index 0eaafdf396f..9adb3909967 100644 --- a/reactive/webserver/http2/src/test/resources/logging-test.properties +++ b/reactive/webserver/http2/src/test/resources/logging-test.properties @@ -16,7 +16,7 @@ #All attributes details -handlers=io.helidon.common.HelidonConsoleHandler +handlers=io.helidon.logging.jul.HelidonConsoleHandler 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 #All log level details diff --git a/reactive/webserver/jersey/src/test/java/io/helidon/reactive/webserver/jersey/JerseyExampleMain.java b/reactive/webserver/jersey/src/test/java/io/helidon/reactive/webserver/jersey/JerseyExampleMain.java index 0e1e2be56db..ce29d73ac71 100644 --- a/reactive/webserver/jersey/src/test/java/io/helidon/reactive/webserver/jersey/JerseyExampleMain.java +++ b/reactive/webserver/jersey/src/test/java/io/helidon/reactive/webserver/jersey/JerseyExampleMain.java @@ -20,7 +20,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; diff --git a/reactive/webserver/webserver/src/main/java/io/helidon/reactive/webserver/NettyWebServer.java b/reactive/webserver/webserver/src/main/java/io/helidon/reactive/webserver/NettyWebServer.java index 6b3d95246ba..7f60b9e19aa 100644 --- a/reactive/webserver/webserver/src/main/java/io/helidon/reactive/webserver/NettyWebServer.java +++ b/reactive/webserver/webserver/src/main/java/io/helidon/reactive/webserver/NettyWebServer.java @@ -35,8 +35,6 @@ import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.net.ssl.SSLContext; @@ -72,7 +70,7 @@ class NettyWebServer implements WebServer { static final String TRACING_COMPONENT = "web-server"; - private static final Logger LOGGER = Logger.getLogger(NettyWebServer.class.getName()); + private static final System.Logger LOGGER = System.getLogger(NettyWebServer.class.getName()); private static final String EXIT_ON_STARTED_KEY = "exit.on.started"; private final Transport transport; @@ -130,7 +128,7 @@ class NettyWebServer implements WebServer { SocketConfiguration soConfig = entry.getValue(); if (!soConfig.enabled()) { - LOGGER.info("Channel '" + name + "' is disabled."); + LOGGER.log(System.Logger.Level.INFO, "Channel '" + name + "' is disabled."); continue; } @@ -167,7 +165,9 @@ class NettyWebServer implements WebServer { // Log entry that also initializes NettyInitializer class String maxOrderProp = NettyInitializer.getMaxOrderProperty(); String maxOrderValue = NettyInitializer.getMaxOrderValue(); - LOGGER.fine(() -> maxOrderProp + " set to " + maxOrderValue); + if (LOGGER.isLoggable(System.Logger.Level.TRACE)) { + LOGGER.log(System.Logger.Level.TRACE, maxOrderProp + " set to " + maxOrderValue); + } } private SslContext createSslContext(WebServerTls webServerTls) { @@ -253,8 +253,10 @@ public synchronized Single start() { try { bootstrap.bind(bindAddress, port).addListener(channelFuture -> { if (!channelFuture.isSuccess()) { - LOGGER.info(() -> "Channel '" + name + "' startup failed with message '" - + channelFuture.cause().getMessage() + "'."); + if (LOGGER.isLoggable(System.Logger.Level.INFO)) { + LOGGER.log(System.Logger.Level.INFO, "Channel '" + name + "' startup failed with message '" + + channelFuture.cause().getMessage() + "'."); + } Throwable cause = channelFuture.cause(); String message = "Channel startup failed: " + name; @@ -269,13 +271,17 @@ public synchronized Single start() { } Channel channel = ((ChannelFuture) channelFuture).channel(); - LOGGER.info(() -> "Channel '" + name + "' started: " + channel - + (socketConfig.tls().isPresent() ? " with TLS " : "")); + if (LOGGER.isLoggable(System.Logger.Level.INFO)) { + LOGGER.log(System.Logger.Level.INFO, "Channel '" + name + "' started: " + channel + + (socketConfig.tls().isPresent() ? " with TLS " : "")); + } channels.put(name, channel); channel.closeFuture().addListener(future -> { - LOGGER.info(() -> "Channel '" + name + "' closed: " + channel); + if (LOGGER.isLoggable(System.Logger.Level.INFO)) { + LOGGER.log(System.Logger.Level.INFO, "Channel '" + name + "' closed: " + channel); + } channels.remove(name); if (channelsUpFuture.isCompletedExceptionally()) { // we're in a startup failure handler @@ -283,7 +289,7 @@ public synchronized Single start() { channelsUpFuture.exceptionally(this::startFailureHandler); // all the channels are down } else if (future.cause() != null) { - LOGGER.log(Level.WARNING, + LOGGER.log(System.Logger.Level.WARNING, "Startup failure channel close failure", new IllegalStateException(future.cause())); } @@ -303,7 +309,9 @@ public synchronized Single start() { } if (channels.size() >= bootstrapsSize) { - LOGGER.finer(() -> "All channels started: " + channels.size()); + if (LOGGER.isLoggable(System.Logger.Level.TRACE)) { + LOGGER.log(System.Logger.Level.TRACE, "All channels started: " + channels.size()); + } channelsUpFuture.complete(this); } }); @@ -318,7 +326,9 @@ public synchronized Single start() { } started = true; - LOGGER.fine(() -> "All channels startup routine initiated: " + bootstrapsSize); + if (LOGGER.isLoggable(System.Logger.Level.TRACE)) { + LOGGER.log(System.Logger.Level.TRACE, "All channels startup routine initiated: " + bootstrapsSize); + } } return Single.create(startFuture); } @@ -326,7 +336,7 @@ public synchronized Single start() { private void started(WebServer server) { // this must be done at runtime, so it works in native image if ("!".equals(System.getProperty(EXIT_ON_STARTED_KEY))) { - LOGGER.info(String.format("Exiting, -D%s set.", EXIT_ON_STARTED_KEY)); + LOGGER.log(System.Logger.Level.INFO, String.format("Exiting, -D%s set.", EXIT_ON_STARTED_KEY)); System.exit(0); } else { startFuture.complete(server); @@ -337,7 +347,7 @@ private WebServer startFailureHandler(Throwable throwable) { shutdownThreadGroups() .whenComplete((webServer, t) -> { if (t != null) { - LOGGER.log(Level.WARNING, "Netty Thread Groups were unable to shutdown.", t); + LOGGER.log(System.Logger.Level.WARNING, "Netty Thread Groups were unable to shutdown.", t); } shutdownFuture.complete(this); startFuture.completeExceptionally(new IllegalStateException("WebServer was unable to start.", @@ -353,7 +363,7 @@ private void shutdown(Throwable cause) { shutdownFuture.complete(this); } else if (cause != null) { if (throwable != null) { - LOGGER.log(Level.WARNING, "Netty Thread Groups were unable to shutdown.", throwable); + LOGGER.log(System.Logger.Level.WARNING, "Netty Thread Groups were unable to shutdown.", throwable); } shutdownFuture.completeExceptionally( new IllegalStateException("WebServer was unable to stop.", cause)); @@ -477,7 +487,9 @@ private Transport acquireTransport() { if (!transport.isAvailableFor(this)) { transport = new NioTransport(); } - LOGGER.fine("Using Transport " + transport); + if (LOGGER.isLoggable(System.Logger.Level.TRACE)) { + LOGGER.log(System.Logger.Level.TRACE, "Using Transport " + transport); + } return transport; } diff --git a/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/KeepAliveTest.java b/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/KeepAliveTest.java index 4182a6a2637..d3018b2f190 100644 --- a/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/KeepAliveTest.java +++ b/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/KeepAliveTest.java @@ -22,10 +22,10 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.common.http.DataChunk; import io.helidon.common.http.Http; import io.helidon.common.reactive.Multi; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webclient.WebClient; import io.helidon.reactive.webclient.WebClientResponse; diff --git a/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/KeepAliveV2ApiTest.java b/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/KeepAliveV2ApiTest.java index 889d5c7541d..dc5b56e8991 100644 --- a/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/KeepAliveV2ApiTest.java +++ b/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/KeepAliveV2ApiTest.java @@ -22,9 +22,9 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.common.http.DataChunk; import io.helidon.common.reactive.Multi; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webclient.WebClient; import io.helidon.reactive.webclient.WebClientResponse; diff --git a/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/ReasonPhraseTest.java b/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/ReasonPhraseTest.java index 35bf4579e32..2aac8d5e29b 100644 --- a/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/ReasonPhraseTest.java +++ b/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/ReasonPhraseTest.java @@ -18,8 +18,8 @@ import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.common.http.Http; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webclient.WebClient; import io.helidon.reactive.webclient.WebClientResponse; diff --git a/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/TestHttpParsingDefaults.java b/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/TestHttpParsingDefaults.java index 92d43e0d471..80cf60bb25e 100644 --- a/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/TestHttpParsingDefaults.java +++ b/reactive/webserver/webserver/src/test/java/io/helidon/reactive/webserver/TestHttpParsingDefaults.java @@ -20,8 +20,8 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import io.helidon.common.LogConfig; import io.helidon.common.http.Http; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webclient.WebClient; import io.helidon.reactive.webclient.WebClientResponse; diff --git a/reactive/webserver/websocket/src/test/java/io/helidon/reactive/webserver/websocket/test/UpgradeFailureTest.java b/reactive/webserver/websocket/src/test/java/io/helidon/reactive/webserver/websocket/test/UpgradeFailureTest.java index a8ced8c2a3d..803b4466318 100644 --- a/reactive/webserver/websocket/src/test/java/io/helidon/reactive/webserver/websocket/test/UpgradeFailureTest.java +++ b/reactive/webserver/websocket/src/test/java/io/helidon/reactive/webserver/websocket/test/UpgradeFailureTest.java @@ -22,7 +22,7 @@ import java.net.http.HttpResponse; import java.time.Duration; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Http1Route; import io.helidon.reactive.webserver.WebServer; diff --git a/reactive/webserver/websocket/src/test/java/io/helidon/reactive/webserver/websocket/test/WSTest.java b/reactive/webserver/websocket/src/test/java/io/helidon/reactive/webserver/websocket/test/WSTest.java index fb571dbccb5..7b65669b769 100644 --- a/reactive/webserver/websocket/src/test/java/io/helidon/reactive/webserver/websocket/test/WSTest.java +++ b/reactive/webserver/websocket/src/test/java/io/helidon/reactive/webserver/websocket/test/WSTest.java @@ -30,7 +30,7 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.WebServer; import io.helidon.reactive.webserver.websocket.WebSocketRouting; diff --git a/reactive/webserver/websocket/src/test/java/module-info.java b/reactive/webserver/websocket/src/test/java/module-info.java index 9acc774d3a9..f6aa63ce1f3 100644 --- a/reactive/webserver/websocket/src/test/java/module-info.java +++ b/reactive/webserver/websocket/src/test/java/module-info.java @@ -19,6 +19,7 @@ open module helidon.webserver.websocket.test { requires io.helidon.reactive.webserver.websocket; + requires io.helidon.logging.common; requires java.logging; requires java.net.http; diff --git a/security/integration/grpc/src/test/java/io/helidon/security/integration/grpc/OutboundSecurityIT.java b/security/integration/grpc/src/test/java/io/helidon/security/integration/grpc/OutboundSecurityIT.java index d5dd981eae2..e86f854d3df 100644 --- a/security/integration/grpc/src/test/java/io/helidon/security/integration/grpc/OutboundSecurityIT.java +++ b/security/integration/grpc/src/test/java/io/helidon/security/integration/grpc/OutboundSecurityIT.java @@ -18,7 +18,6 @@ import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.common.http.Http; import io.helidon.config.Config; import io.helidon.grpc.core.GrpcHelper; @@ -28,6 +27,7 @@ import io.helidon.grpc.server.ServiceDescriptor; import io.helidon.grpc.server.test.Echo; import io.helidon.grpc.server.test.EchoServiceGrpc; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.ServerRequest; import io.helidon.reactive.webserver.ServerResponse; diff --git a/security/integration/grpc/src/test/java/io/helidon/security/integration/grpc/SecurityFromConfigIT.java b/security/integration/grpc/src/test/java/io/helidon/security/integration/grpc/SecurityFromConfigIT.java index cc83f713902..6db7d0e2656 100644 --- a/security/integration/grpc/src/test/java/io/helidon/security/integration/grpc/SecurityFromConfigIT.java +++ b/security/integration/grpc/src/test/java/io/helidon/security/integration/grpc/SecurityFromConfigIT.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. + * Copyright (c) 2019, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +19,6 @@ import java.util.Iterator; import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.config.Config; import io.helidon.config.ConfigSources; import io.helidon.grpc.server.GrpcRouting; @@ -29,6 +28,7 @@ import io.helidon.grpc.server.test.EchoServiceGrpc; import io.helidon.grpc.server.test.StringServiceGrpc; import io.helidon.grpc.server.test.Strings; +import io.helidon.logging.common.LogConfig; import io.grpc.Channel; import io.grpc.Status; diff --git a/security/integration/grpc/src/test/java/io/helidon/security/integration/grpc/ServiceAndMethodLevelSecurityIT.java b/security/integration/grpc/src/test/java/io/helidon/security/integration/grpc/ServiceAndMethodLevelSecurityIT.java index b1704942c75..a82c8ddea10 100644 --- a/security/integration/grpc/src/test/java/io/helidon/security/integration/grpc/ServiceAndMethodLevelSecurityIT.java +++ b/security/integration/grpc/src/test/java/io/helidon/security/integration/grpc/ServiceAndMethodLevelSecurityIT.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. + * Copyright (c) 2019, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +19,6 @@ import java.util.Iterator; import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.config.Config; import io.helidon.grpc.server.GrpcRouting; import io.helidon.grpc.server.GrpcServer; @@ -29,6 +28,7 @@ import io.helidon.grpc.server.test.EchoServiceGrpc; import io.helidon.grpc.server.test.StringServiceGrpc; import io.helidon.grpc.server.test.Strings.StringMessage; +import io.helidon.logging.common.LogConfig; import io.helidon.security.Security; import io.helidon.security.providers.httpauth.HttpBasicAuthProvider; diff --git a/tests/apps/bookstore/bookstore-mp/src/main/java/io/helidon/tests/apps/bookstore/mp/Main.java b/tests/apps/bookstore/bookstore-mp/src/main/java/io/helidon/tests/apps/bookstore/mp/Main.java index 607df6d6c96..7eb873d16ae 100644 --- a/tests/apps/bookstore/bookstore-mp/src/main/java/io/helidon/tests/apps/bookstore/mp/Main.java +++ b/tests/apps/bookstore/bookstore-mp/src/main/java/io/helidon/tests/apps/bookstore/mp/Main.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. + * Copyright (c) 2019, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ package io.helidon.tests.apps.bookstore.mp; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.microprofile.server.Server; /** diff --git a/tests/apps/bookstore/bookstore-mp/src/main/java/module-info.java b/tests/apps/bookstore/bookstore-mp/src/main/java/module-info.java index fa42338d4ce..cacf6958cc8 100644 --- a/tests/apps/bookstore/bookstore-mp/src/main/java/module-info.java +++ b/tests/apps/bookstore/bookstore-mp/src/main/java/module-info.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2021 Oracle and/or its affiliates. + * Copyright (c) 2020, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,8 @@ requires io.helidon.microprofile.bundle.core; requires io.helidon.microprofile.metrics; requires io.helidon.microprofile.health; + requires io.helidon.logging.common; + requires io.helidon.logging.jul; requires io.helidon.tests.apps.bookstore.common; diff --git a/tests/apps/bookstore/bookstore-se/src/main/java/io/helidon/tests/apps/bookstore/se/Main.java b/tests/apps/bookstore/bookstore-se/src/main/java/io/helidon/tests/apps/bookstore/se/Main.java index d84b9e98b5f..46c61b176d0 100644 --- a/tests/apps/bookstore/bookstore-se/src/main/java/io/helidon/tests/apps/bookstore/se/Main.java +++ b/tests/apps/bookstore/bookstore-se/src/main/java/io/helidon/tests/apps/bookstore/se/Main.java @@ -16,11 +16,11 @@ package io.helidon.tests.apps.bookstore.se; -import io.helidon.common.LogConfig; import io.helidon.common.configurable.Resource; import io.helidon.common.pki.KeyConfig; import io.helidon.config.Config; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.MetricsSupport; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.media.jackson.JacksonSupport; diff --git a/tests/apps/bookstore/bookstore-se/src/main/java/module-info.java b/tests/apps/bookstore/bookstore-se/src/main/java/module-info.java index bd88991cab9..5063d4a9260 100644 --- a/tests/apps/bookstore/bookstore-se/src/main/java/module-info.java +++ b/tests/apps/bookstore/bookstore-se/src/main/java/module-info.java @@ -31,6 +31,8 @@ requires io.helidon.reactive.media.jsonb; requires io.helidon.reactive.media.jackson; requires io.helidon.tests.apps.bookstore.common; + requires io.helidon.logging.common; + requires io.helidon.logging.jul; exports io.helidon.tests.apps.bookstore.se; } diff --git a/tests/functional/config-profiles/src/main/java/io/helidon/tests/configprofile/Main.java b/tests/functional/config-profiles/src/main/java/io/helidon/tests/configprofile/Main.java index 23916188fbb..6f2a917dd4d 100644 --- a/tests/functional/config-profiles/src/main/java/io/helidon/tests/configprofile/Main.java +++ b/tests/functional/config-profiles/src/main/java/io/helidon/tests/configprofile/Main.java @@ -16,9 +16,9 @@ package io.helidon.tests.configprofile; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.Single; import io.helidon.config.Config; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.media.jsonp.JsonpSupport; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; diff --git a/tests/functional/jax-rs-subresource/src/test/java/io/helidon/tests/functional/jaxrs/subresource/MpSubResourceTest.java b/tests/functional/jax-rs-subresource/src/test/java/io/helidon/tests/functional/jaxrs/subresource/MpSubResourceTest.java index 5df3c155298..5069e7f70e7 100644 --- a/tests/functional/jax-rs-subresource/src/test/java/io/helidon/tests/functional/jaxrs/subresource/MpSubResourceTest.java +++ b/tests/functional/jax-rs-subresource/src/test/java/io/helidon/tests/functional/jaxrs/subresource/MpSubResourceTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2021 Oracle and/or its affiliates. + * Copyright (c) 2020, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,8 +19,8 @@ import java.nio.charset.StandardCharsets; import java.util.Base64; -import io.helidon.common.LogConfig; import io.helidon.jersey.connector.HelidonConnectorProvider; +import io.helidon.logging.common.LogConfig; import io.helidon.microprofile.server.Server; import jakarta.ws.rs.client.Client; diff --git a/tests/integration/dbclient/appl/src/main/java/io/helidon/tests/integration/dbclient/appl/ApplMain.java b/tests/integration/dbclient/appl/src/main/java/io/helidon/tests/integration/dbclient/appl/ApplMain.java index a21851935d2..43517337bff 100644 --- a/tests/integration/dbclient/appl/src/main/java/io/helidon/tests/integration/dbclient/appl/ApplMain.java +++ b/tests/integration/dbclient/appl/src/main/java/io/helidon/tests/integration/dbclient/appl/ApplMain.java @@ -18,7 +18,7 @@ import java.util.Map; import java.util.logging.Logger; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.config.Config; import io.helidon.config.ConfigSources; import io.helidon.reactive.dbclient.DbClient; diff --git a/tests/integration/jpa/appl/src/test/java/io/helidon/tests/integration/jpa/appl/test/LifeCycleExtension.java b/tests/integration/jpa/appl/src/test/java/io/helidon/tests/integration/jpa/appl/test/LifeCycleExtension.java index e160e799488..340ae5136dc 100644 --- a/tests/integration/jpa/appl/src/test/java/io/helidon/tests/integration/jpa/appl/test/LifeCycleExtension.java +++ b/tests/integration/jpa/appl/src/test/java/io/helidon/tests/integration/jpa/appl/test/LifeCycleExtension.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2021 Oracle and/or its affiliates. + * Copyright (c) 2020, 2022 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,15 +21,14 @@ import java.util.logging.Level; import java.util.logging.Logger; +import io.helidon.logging.common.LogConfig; +import io.helidon.tests.integration.jpa.appl.Utils; + import jakarta.json.stream.JsonParsingException; import jakarta.ws.rs.client.Client; import jakarta.ws.rs.client.ClientBuilder; import jakarta.ws.rs.client.WebTarget; import jakarta.ws.rs.core.Response; - -import io.helidon.common.LogConfig; -import io.helidon.tests.integration.jpa.appl.Utils; - import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.ExtensionContext; diff --git a/tests/integration/kafka/src/test/java/io/helidon/messaging/connectors/kafka/AbstractKafkaTest.java b/tests/integration/kafka/src/test/java/io/helidon/messaging/connectors/kafka/AbstractKafkaTest.java index d7c14c3b880..78cdf1ea5a7 100644 --- a/tests/integration/kafka/src/test/java/io/helidon/messaging/connectors/kafka/AbstractKafkaTest.java +++ b/tests/integration/kafka/src/test/java/io/helidon/messaging/connectors/kafka/AbstractKafkaTest.java @@ -29,7 +29,7 @@ import java.util.logging.Logger; import io.helidon.common.LazyValue; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import org.apache.kafka.clients.admin.AdminClient; import org.apache.kafka.clients.consumer.Consumer; diff --git a/tests/integration/mp-grpc/src/test/java/io/helidon/microprofile/grpc/metrics/MetricsTest.java b/tests/integration/mp-grpc/src/test/java/io/helidon/microprofile/grpc/metrics/MetricsTest.java index f8a0ee5d8b1..0f3e99a5ccb 100644 --- a/tests/integration/mp-grpc/src/test/java/io/helidon/microprofile/grpc/metrics/MetricsTest.java +++ b/tests/integration/mp-grpc/src/test/java/io/helidon/microprofile/grpc/metrics/MetricsTest.java @@ -21,10 +21,10 @@ import java.util.logging.Level; import java.util.logging.Logger; -import io.helidon.common.LogConfig; import io.helidon.grpc.examples.common.StringServiceGrpc; import io.helidon.grpc.examples.common.Strings.StringMessage; import io.helidon.grpc.server.GrpcServer; +import io.helidon.logging.common.LogConfig; import io.helidon.microprofile.grpc.server.GrpcServerCdiExtension; import io.helidon.microprofile.server.Server; diff --git a/tests/integration/mp-grpc/src/test/java/io/helidon/microprofile/grpc/server/AnnotatedServiceTest.java b/tests/integration/mp-grpc/src/test/java/io/helidon/microprofile/grpc/server/AnnotatedServiceTest.java index 870fdb5b561..015192243a5 100644 --- a/tests/integration/mp-grpc/src/test/java/io/helidon/microprofile/grpc/server/AnnotatedServiceTest.java +++ b/tests/integration/mp-grpc/src/test/java/io/helidon/microprofile/grpc/server/AnnotatedServiceTest.java @@ -24,13 +24,13 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import io.helidon.common.LogConfig; import io.helidon.grpc.core.ResponseHelper; import io.helidon.grpc.server.CollectingObserver; import io.helidon.grpc.server.GrpcRouting; import io.helidon.grpc.server.GrpcServer; import io.helidon.grpc.server.GrpcServerConfiguration; import io.helidon.grpc.server.ServiceDescriptor; +import io.helidon.logging.common.LogConfig; import io.helidon.microprofile.grpc.core.Bidirectional; import io.helidon.microprofile.grpc.core.ClientStreaming; import io.helidon.microprofile.grpc.core.Grpc; diff --git a/tests/integration/native-image/nima-1/pom.xml b/tests/integration/native-image/nima-1/pom.xml index 961086c393f..cf519f00370 100644 --- a/tests/integration/native-image/nima-1/pom.xml +++ b/tests/integration/native-image/nima-1/pom.xml @@ -78,6 +78,10 @@ io.helidon.common helidon-common-reactive + + io.helidon.logging + helidon-logging-common + io.helidon.tests.integration helidon-tests-native-image-static-content diff --git a/tests/integration/native-image/nima-1/src/main/java/io/helidon/tests/integration/nativeimage/nima1/Nima1Main.java b/tests/integration/native-image/nima-1/src/main/java/io/helidon/tests/integration/nativeimage/nima1/Nima1Main.java index 6d5b66ea281..b1dc5c36b96 100644 --- a/tests/integration/native-image/nima-1/src/main/java/io/helidon/tests/integration/nativeimage/nima1/Nima1Main.java +++ b/tests/integration/native-image/nima-1/src/main/java/io/helidon/tests/integration/nativeimage/nima1/Nima1Main.java @@ -18,10 +18,10 @@ import java.nio.file.Paths; import java.util.Set; -import io.helidon.common.LogConfig; import io.helidon.config.Config; import io.helidon.config.FileSystemWatcher; import io.helidon.health.HealthCheckResponse; +import io.helidon.logging.common.LogConfig; import io.helidon.nima.observe.ObserveSupport; import io.helidon.nima.observe.health.HealthObserveProvider; import io.helidon.nima.observe.health.HealthService; diff --git a/tests/integration/native-image/se-1/src/main/java/io/helidon/tests/integration/nativeimage/se1/Se1Main.java b/tests/integration/native-image/se-1/src/main/java/io/helidon/tests/integration/nativeimage/se1/Se1Main.java index 777d9fe39eb..876797a3aa1 100644 --- a/tests/integration/native-image/se-1/src/main/java/io/helidon/tests/integration/nativeimage/se1/Se1Main.java +++ b/tests/integration/native-image/se-1/src/main/java/io/helidon/tests/integration/nativeimage/se1/Se1Main.java @@ -18,10 +18,10 @@ import java.nio.file.Paths; import java.util.Set; -import io.helidon.common.LogConfig; import io.helidon.config.Config; import io.helidon.config.FileSystemWatcher; import io.helidon.health.checks.HealthChecks; +import io.helidon.logging.common.LogConfig; import io.helidon.metrics.MetricsSupport; import io.helidon.reactive.health.HealthSupport; import io.helidon.reactive.media.jsonb.JsonbSupport; diff --git a/tests/integration/tools/client/src/main/java/io/helidon/tests/integration/tools/client/TestsLifeCycleExtension.java b/tests/integration/tools/client/src/main/java/io/helidon/tests/integration/tools/client/TestsLifeCycleExtension.java index 9f5cf3128e1..7d6aa2d275d 100644 --- a/tests/integration/tools/client/src/main/java/io/helidon/tests/integration/tools/client/TestsLifeCycleExtension.java +++ b/tests/integration/tools/client/src/main/java/io/helidon/tests/integration/tools/client/TestsLifeCycleExtension.java @@ -17,7 +17,7 @@ import java.util.logging.Logger; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.tests.integration.tools.client.HelidonProcessRunner.ExecType; import org.junit.jupiter.api.extension.BeforeAllCallback; diff --git a/tests/integration/tools/example/src/main/java/io/helidon/tests/integration/tools/example/ServerMain.java b/tests/integration/tools/example/src/main/java/io/helidon/tests/integration/tools/example/ServerMain.java index 55bdb9d2e99..30d598a1fea 100644 --- a/tests/integration/tools/example/src/main/java/io/helidon/tests/integration/tools/example/ServerMain.java +++ b/tests/integration/tools/example/src/main/java/io/helidon/tests/integration/tools/example/ServerMain.java @@ -18,7 +18,7 @@ import java.time.Duration; import java.util.logging.Logger; -import io.helidon.common.LogConfig; +import io.helidon.logging.common.LogConfig; import io.helidon.config.Config; import io.helidon.config.ConfigSources; import io.helidon.reactive.dbclient.DbClient; diff --git a/tests/integration/vault/se/src/main/java/io/helidon/examples/integrations/vault/hcp/reactive/ReactiveVaultMain.java b/tests/integration/vault/se/src/main/java/io/helidon/examples/integrations/vault/hcp/reactive/ReactiveVaultMain.java index def3b197b0e..4f9b53da9ab 100644 --- a/tests/integration/vault/se/src/main/java/io/helidon/examples/integrations/vault/hcp/reactive/ReactiveVaultMain.java +++ b/tests/integration/vault/se/src/main/java/io/helidon/examples/integrations/vault/hcp/reactive/ReactiveVaultMain.java @@ -18,7 +18,6 @@ import java.util.concurrent.TimeUnit; -import io.helidon.common.LogConfig; import io.helidon.common.reactive.CompletionAwaitable; import io.helidon.config.Config; import io.helidon.integrations.vault.Vault; @@ -27,6 +26,7 @@ import io.helidon.integrations.vault.secrets.kv2.Kv2SecretsRx; import io.helidon.integrations.vault.secrets.transit.TransitSecretsRx; import io.helidon.integrations.vault.sys.SysRx; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.WebServer; diff --git a/tests/integration/webserver/upgrade/src/main/java/io/helidon/integration/webserver/upgrade/Main.java b/tests/integration/webserver/upgrade/src/main/java/io/helidon/integration/webserver/upgrade/Main.java index a1709214205..33badd624b9 100644 --- a/tests/integration/webserver/upgrade/src/main/java/io/helidon/integration/webserver/upgrade/Main.java +++ b/tests/integration/webserver/upgrade/src/main/java/io/helidon/integration/webserver/upgrade/Main.java @@ -16,10 +16,10 @@ package io.helidon.integration.webserver.upgrade; -import io.helidon.common.LogConfig; import io.helidon.common.configurable.Resource; import io.helidon.common.pki.KeyConfig; import io.helidon.common.reactive.Single; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Http1Route; import io.helidon.reactive.webserver.PathMatcher; import io.helidon.reactive.webserver.WebServer; diff --git a/tests/integration/webserver/upgrade/src/main/java/module-info.java b/tests/integration/webserver/upgrade/src/main/java/module-info.java index a29f1181a20..490414f940d 100644 --- a/tests/integration/webserver/upgrade/src/main/java/module-info.java +++ b/tests/integration/webserver/upgrade/src/main/java/module-info.java @@ -24,5 +24,8 @@ requires io.helidon.reactive.webserver; requires io.helidon.reactive.webserver.http2; requires io.helidon.reactive.webserver.websocket; + requires io.helidon.logging.common; + requires io.helidon.logging.jul; + requires java.logging; } \ No newline at end of file diff --git a/tests/integration/webserver/upgrade/src/main/resources/logging.properties b/tests/integration/webserver/upgrade/src/main/resources/logging.properties index b68709e31df..efe83882543 100644 --- a/tests/integration/webserver/upgrade/src/main/resources/logging.properties +++ b/tests/integration/webserver/upgrade/src/main/resources/logging.properties @@ -16,7 +16,7 @@ #All attributes details -handlers=io.helidon.common.HelidonConsoleHandler +handlers=io.helidon.logging.jul.HelidonConsoleHandler 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 #All log level details diff --git a/tests/integration/webserver/upgrade/src/test/resources/logging-test.properties b/tests/integration/webserver/upgrade/src/test/resources/logging-test.properties index 0eaafdf396f..9adb3909967 100644 --- a/tests/integration/webserver/upgrade/src/test/resources/logging-test.properties +++ b/tests/integration/webserver/upgrade/src/test/resources/logging-test.properties @@ -16,7 +16,7 @@ #All attributes details -handlers=io.helidon.common.HelidonConsoleHandler +handlers=io.helidon.logging.jul.HelidonConsoleHandler 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 #All log level details From a3566f86b7b1a775a826d91eba692bacc24b9fdb Mon Sep 17 00:00:00 2001 From: Tomas Langer Date: Tue, 6 Sep 2022 21:30:10 +0200 Subject: [PATCH 2/2] Update after rebase - moved LogConfig --- .../reactive/tests/benchmark/techempower/TechEmpowerMain.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactive/tests/benchmark/techempower/src/main/java/io/helidon/reactive/tests/benchmark/techempower/TechEmpowerMain.java b/reactive/tests/benchmark/techempower/src/main/java/io/helidon/reactive/tests/benchmark/techempower/TechEmpowerMain.java index 3015831cd67..8676f1b7f24 100644 --- a/reactive/tests/benchmark/techempower/src/main/java/io/helidon/reactive/tests/benchmark/techempower/TechEmpowerMain.java +++ b/reactive/tests/benchmark/techempower/src/main/java/io/helidon/reactive/tests/benchmark/techempower/TechEmpowerMain.java @@ -20,10 +20,10 @@ import java.nio.charset.StandardCharsets; import java.util.Arrays; -import io.helidon.common.LogConfig; import io.helidon.common.http.Http.Header; import io.helidon.common.http.Http.HeaderValue; import io.helidon.common.http.Http.HeaderValues; +import io.helidon.logging.common.LogConfig; import io.helidon.reactive.webserver.Handler; import io.helidon.reactive.webserver.Routing; import io.helidon.reactive.webserver.ServerRequest;