Remove log4j 1.x from Arquillian testsuite (#44827)

Closes #44555

Signed-off-by: stianst <stianst@gmail.com>
This commit is contained in:
Stian Thorgersen 2025-12-11 12:31:11 +01:00 committed by GitHub
parent 4e01d85772
commit 421abedaa4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 108 additions and 188 deletions

View File

@ -113,13 +113,13 @@ server nodes. Tests are usually using 2 cluster adapter nodes.
## Testsuite logging
It is configured in `testsuite/integration-arquillian/tests/base/src/test/resources/log4j.properties` . You can see that logging of testsuite itself (category `org.keycloak.testsuite`) is debug by default.
It is configured in `testsuite/integration-arquillian/tests/base/src/test/resources/logging.properties` . You can see that logging of testsuite itself (category `org.keycloak.testsuite`) is DEBUG by default.
When you run tests with undertow (which is by default), there is logging for Keycloak server and adapter (category `org.keycloak` ) in `info` when you run tests from IDE, but `off` when
When you run tests with undertow (which is by default), there is logging for Keycloak server and adapter (category `org.keycloak` ) in `INFO` when you run tests from IDE, but `OFF` when
you run tests with maven. The reason is that, we don't want huge logs when running mvn build. However using system property `keycloak.logging.level` will override it. This can be used for both IDE or maven.
So for example using `-Dkeycloak.logging.level=debug` will enable debug logging for keycloak server and adapter.
So for example using `-Dkeycloak.logging.level=DEBUG` will enable debug logging for keycloak server and adapter.
For more fine-tuning of individual categories, you can look at log4j.properties file and temporarily enable/disable them here.
For more fine-tuning of individual categories, you can look at logging.properties file and temporarily enable/disable them here.
### Wildfly server logging

View File

@ -304,7 +304,7 @@
<includes>
<include>wildfly-config.xml</include>
<include>password-blacklists/**</include>
<include>log4j.properties</include>
<include>logging.properties</include>
<include>vault/**</include>
<include>firefox-cookies-prefs.js</include>
</includes>

View File

@ -1,67 +0,0 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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 org.keycloak.testsuite.util;
import org.apache.log4j.Level;
import org.jboss.logging.Logger;
import org.junit.runner.Description;
import org.junit.runner.notification.RunListener;
/**
* This is executed when test is run from maven (maven-surefire-plugin), but not when it is run from IDE. That allows to run some actions, which should be
* executed just for maven build (eg. disable logging)
*
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class NonIDERunListener extends RunListener {
private static final Logger log = Logger.getLogger(NonIDERunListener.class);
private static final String KEYCLOAK_LOGGING_LEVEL_NAME = "keycloak.logging.level";
@Override
public void testRunStarted(Description description) throws Exception {
disableKeycloakLogging();
}
private void disableKeycloakLogging() {
String loggingLevel = System.getProperty(KEYCLOAK_LOGGING_LEVEL_NAME, "").toLowerCase();
if (loggingLevel.isEmpty()) {
log.infof("Setting %s to off. Keycloak server logging will be disabled", KEYCLOAK_LOGGING_LEVEL_NAME);
System.setProperty(KEYCLOAK_LOGGING_LEVEL_NAME, "off");
org.apache.log4j.Logger.getLogger("org.keycloak").setLevel(Level.OFF);
} else {
switch (loggingLevel) {
case "debug":
org.apache.log4j.Logger.getLogger("org.keycloak").setLevel(Level.DEBUG);
break;
case "trace":
org.apache.log4j.Logger.getLogger("org.keycloak").setLevel(Level.TRACE);
break;
case "all":
org.apache.log4j.Logger.getLogger("org.keycloak").setLevel(Level.ALL);
break;
default:
org.apache.log4j.Logger.getLogger("org.keycloak").setLevel(Level.INFO);
break;
}
}
}
}

View File

@ -1,102 +0,0 @@
#
# Copyright 2016 Red Hat, Inc. and/or its affiliates
# and other contributors as indicated by the @author tags.
#
# 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.
#
log4j.rootLogger=info, keycloak
log4j.appender.keycloak=org.apache.log4j.ConsoleAppender
log4j.appender.keycloak.layout=org.apache.log4j.EnhancedPatternLayout
keycloak.testsuite.logging.pattern=%d{HH:mm:ss,SSS} %-5p [%c] %m%n
log4j.appender.keycloak.layout.ConversionPattern=${keycloak.testsuite.logging.pattern}
# Logging with "info" when running test from IDE, but disabled when running test with "mvn" . Both cases can be overriden by use system property "keycloak.logging.level" (eg. -Dkeycloak.logging.level=debug )
log4j.logger.org.keycloak=${keycloak.logging.level:info}
log4j.logger.org.jboss.resteasy.resteasy_jaxrs.i18n=off
#log4j.logger.org.keycloak.keys.DefaultKeyManager=trace
#log4j.logger.org.keycloak.services.managers.AuthenticationManager=trace
keycloak.testsuite.logging.level=debug
log4j.logger.org.keycloak.testsuite=${keycloak.testsuite.logging.level}
log4j.logger.org.keycloak.testsuite.arquillian.undertow.lb.SimpleUndertowLoadBalancer=info
# Enable to view events
# log4j.logger.org.keycloak.events=debug
# Enable to view loaded SPI and Providers
# log4j.logger.org.keycloak.services.DefaultKeycloakSessionFactory=debug
# log4j.logger.org.keycloak.services.DefaultComponentFactoryProviderFactory=debug
# log4j.logger.org.keycloak.provider.ProviderManager=debug
# log4j.logger.org.keycloak.provider.FileSystemProviderLoaderFactory=debug
# Liquibase updates logged with "info" by default. Logging level can be changed by system property "keycloak.liquibase.logging.level"
keycloak.liquibase.logging.level=info
log4j.logger.org.keycloak.connections.jpa.updater.liquibase=${keycloak.liquibase.logging.level}
log4j.logger.org.keycloak.connections.jpa.DefaultJpaConnectionProviderFactory=debug
# Enable to view database updates
# log4j.logger.org.keycloak.connections.jpa.DefaultJpaConnectionProviderFactory=debug
# log4j.logger.org.keycloak.migration.MigrationModelManager=debug
keycloak.infinispan.logging.level=info
log4j.logger.org.keycloak.cluster.infinispan=${keycloak.infinispan.logging.level}
log4j.logger.org.keycloak.connections.infinispan=${keycloak.infinispan.logging.level}
log4j.logger.org.keycloak.keys.infinispan=${keycloak.infinispan.logging.level}
log4j.logger.org.keycloak.models.cache.infinispan=${keycloak.infinispan.logging.level}
log4j.logger.org.keycloak.models.sessions.infinispan=${keycloak.infinispan.logging.level}
log4j.logger.org.infinispan.client.hotrod.impl=info
log4j.logger.org.infinispan.client.hotrod.impl.query.RemoteQuery=error
# Enable to view kerberos/spnego logging
# log4j.logger.org.keycloak.broker.kerberos=trace
# Enable to view detailed AS REQ and TGS REQ requests to embedded Kerberos server
# log4j.logger.org.apache.directory.server.kerberos=debug
log4j.logger.org.xnio=off
log4j.logger.org.hibernate=off
log4j.logger.org.jboss.resteasy=warn
log4j.logger.org.apache.directory.api=warn
log4j.logger.org.apache.directory.server.core=warn
# log4j.logger.org.keycloak.authentication.authenticators.browser.IdentityProviderAuthenticator=trace
# log4j.logger.org.keycloak.keys.infinispan=trace
log4j.logger.org.keycloak.services.clientregistration.policy=debug
# log4j.logger.org.keycloak.services.clientpolicy=trace
# log4j.logger.org.keycloak.testsuite.clientpolicy=trace
# log4j.logger.org.keycloak.protocol.ciba=trace
#log4j.logger.org.keycloak.authentication=debug
## Enable SQL debugging
# Enable logs the SQL statements
#log4j.logger.org.hibernate.SQL=debug
# Enable logs the JDBC parameters passed to a query
#log4j.logger.org.hibernate.orm.jdbc.bind=trace
# log4j.logger.org.keycloak.models.map=trace
# log4j.logger.org.keycloak.models.map.transaction=debug
# Enable to log short stack traces for log entries enabled with StackUtil.getShortStackTrace() calls
# log4j.logger.org.keycloak.STACK_TRACE=trace
# Client policies
#log4j.logger.org.keycloak.services.clientpolicy=trace

View File

@ -0,0 +1,100 @@
loggers=\
org.keycloak,\
org.keycloak.testsuite,\
org.jboss.resteasy.resteasy_jaxrs.i18n,\
org.keycloak.connections.jpa.updater.liquibase,\
org.keycloak.cluster.infinispan,\
org.keycloak.connections.infinispan,\
org.keycloak.keys.infinispan,\
org.keycloak.models.cache.infinispan,\
org.keycloak.models.sessions.infinispan,\
org.infinispan.client.hotrod.impl,\
org.infinispan.client.hotrod.impl.query.RemoteQuery,\
org.xnio,\
org.hibernate,\
org.jboss.resteasy,\
org.apache.directory.api,\
org.apache.directory.server.core
logger.level=INFO
logger.handlers=CONSOLE
logger.org.keycloak.level=${keycloak.logging.level:INFO}
logger.org.keycloak.testsuite.level=${keycloak.testsuite.logging.level:DEBUG}
logger.org.jboss.resteasy.resteasy_jaxrs.i18n.level=OFF
# Enable to view events
# logger.org.keycloak.events.level=debug
# Enable to view loaded SPI and Providers
# logger.org.keycloak.services.DefaultKeycloakSessionFactory.level=DEBUG
# logger.org.keycloak.services.DefaultComponentFactoryProviderFactory.level=DEBUG
# logger.org.keycloak.provider.ProviderManager.level=DEBUG
# logger.org.keycloak.provider.FileSystemProviderLoaderFactory.level=DEBUG
# Liquibase updates logged with "info" by default. Logging level can be changed by system property "keycloak.liquibase.logging.level"
logger.org.keycloak.connections.jpa.updater.liquibase.level=${keycloak.liquibase.logging.level:INFO}
# logger.org.keycloak.connections.jpa.DefaultJpaConnectionProviderFactory.level=debug
# Enable to view database updates
# logger.org.keycloak.connections.jpa.DefaultJpaConnectionProviderFactory.level=debug
# logger.org.keycloak.migration.MigrationModelManager.level=debug
logger.org.keycloak.cluster.infinispan.level=${keycloak.infinispan.logging.level:INFO}
logger.org.keycloak.connections.infinispan.level=${keycloak.infinispan.logging.level:INFO}
logger.org.keycloak.keys.infinispan.level=${keycloak.infinispan.logging.level:INFO}
logger.org.keycloak.models.cache.infinispan.level=${keycloak.infinispan.logging.level:INFO}
logger.org.keycloak.models.sessions.infinispan.level=${keycloak.infinispan.logging.level:INFO}
logger.org.infinispan.client.hotrod.impl.level=INFO
logger.org.infinispan.client.hotrod.impl.query.RemoteQuery.level=ERROR
# Enable to view kerberos/spnego logging
# log4j.logger.org.keycloak.broker.kerberos=TRACE
# Enable to view detailed AS REQ and TGS REQ requests to embedded Kerberos server
# log4j.logger.org.apache.directory.server.kerberos=DEBUG
logger.org.xnio.level=OFF
logger.org.hibernate.level=OFF
logger.org.jboss.resteasy.level=WARN
logger.org.apache.directory.api.level=WARN
logger.org.apache.directory.server.core.level=WARN
# logger.org.keycloak.authentication.authenticators.browser.IdentityProviderAuthenticator.level=TRACE
# logger.org.keycloak.keys.infinispan.level=TRACE
# logger.org.keycloak.services.clientregistration.policy.level=DEBUG
# logger.org.keycloak.services.clientpolicy.level=TRACE
# logger.org.keycloak.testsuite.clientpolicy.level=TRACE
# logger.org.keycloak.protocol.ciba.level=TRACE
# logger.org.keycloak.authentication.level=DEBUG
# Enable SQL debugging (logs SQL statements)
# logger.org.hibernate.SQL.level=DEBUG
# Enable logs the JDBC parameters passed to a query
# logger.org.hibernate.orm.jdbc.bind.level=TRACE
# logger.org.keycloak.models.map.level=TRACE
# logger.org.keycloak.models.map.transaction.level=DEBUG
# Enable to log short stack traces for log entries enabled with StackUtil.getShortStackTrace() calls
# logger.org.keycloak.STACK_TRACE.level=TRACE
# Client policies
# logger.org.keycloak.services.clientpolicy.level=TRACE
handler.CONSOLE=org.jboss.logmanager.handlers.ConsoleHandler
handler.CONSOLE.properties=autoFlush
handler.CONSOLE.level=DEBUG
handler.CONSOLE.autoFlush=true
handler.CONSOLE.formatter=PATTERN
# The log format pattern for both logs
formatter.PATTERN=org.jboss.logmanager.formatters.PatternFormatter
formatter.PATTERN.properties=pattern
formatter.PATTERN.pattern=%d{HH:mm:ss,SSS} %-5p %t [%c] %m%n

View File

@ -59,7 +59,7 @@
<artifactId>integration-arquillian-tests-base</artifactId>
<version>${project.version}</version>
<classifier>tests</classifier>
<includes>arquillian.xml,wildfly-config.xml,test-constants.properties,kerberos/*,keystore/*,password-blacklists/*,log4j.properties,vault/*</includes>
<includes>arquillian.xml,wildfly-config.xml,test-constants.properties,kerberos/*,keystore/*,password-blacklists/*,logging.properties,vault/*</includes>
</artifactItem>
</artifactItems>
</configuration>

View File

@ -395,7 +395,6 @@
<systemPropertyVariables>
<project.build.directory>${project.build.directory}</project.build.directory>
<arquillian.xml>${project.build.directory}/dependency/arquillian.xml</arquillian.xml>
<log4j.configuration>file:${project.build.directory}/dependency/log4j.properties</log4j.configuration> <!-- for the logging to properly work with tests in the 'other' module -->
<auth.server>${auth.server}</auth.server>
<auth.server.container>${auth.server.container}</auth.server.container>
@ -593,12 +592,6 @@
<!-- needed when running the embedded Quarkus auth server -->
<java.util.concurrent.ForkJoinPool.common.threadFactory>io.quarkus.bootstrap.forkjoin.QuarkusForkJoinWorkerThreadFactory</java.util.concurrent.ForkJoinPool.common.threadFactory>
</systemPropertyVariables>
<properties>
<property>
<name>listener</name>
<value>org.keycloak.testsuite.util.TestEventsLogger,org.keycloak.testsuite.util.NonIDERunListener</value>
</property>
</properties>
</configuration>
</plugin>
<plugin>
@ -1569,17 +1562,13 @@
</dependency>-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<groupId>org.jboss.logmanager</groupId>
<artifactId>jboss-logmanager</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-reload4j</artifactId>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>