Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

no way to turn off status logging #3577

Open
voddan opened this issue Mar 26, 2025 · 8 comments
Open

no way to turn off status logging #3577

voddan opened this issue Mar 26, 2025 · 8 comments
Labels
api Affects the public API waiting-for-user More information is needed from the user

Comments

@voddan
Copy link

voddan commented Mar 26, 2025

Description

Status logger keeps printing to console despite me setting it to OFF in all ways I could think of:

  1. set JAVA_OPTS=%JAVA_OPTS% -Dlog4j2.StatusLogger.level="OFF"
  2. set JAVA_OPTS=%JAVA_OPTS% -Dlog4j2.StatusLoggerLevel="OFF"
  3. <Configuration monitorInterval="60" status="OFF">

Configuration

Version: 2.24.3

Operating system: Windows 11

JDK: Amazon Correto 17.0.12

Logs

The exception I get (it can repeat itself many times, this is jus one part):

2025-03-26T13:35:34.789103500Z main ERROR Unable to write to stream TCP:127.0.0.1:1234560 for appender NETWORK org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to TCP:127.0.0.1:1234560: socket not available
        at org.apache.logging.log4j.core.net.TcpSocketManager.write(TcpSocketManager.java:264)
        at org.apache.logging.log4j.core.appender.OutputStreamManager.write(OutputStreamManager.java:202)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.writeByteArrayToManager(AbstractOutputStreamAppender.java:236)
        at org.apache.logging.log4j.core.appender.SocketAppender.directEncodeEvent(SocketAppender.java:598)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:220)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:211)
        at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:133)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:124)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:88)
        at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:714)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:672)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:648)
        at org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:705)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:674)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:648)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:584)
        at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:92)
        at org.apache.logging.log4j.core.Logger.log(Logger.java:187)
        at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2904)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2857)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2839)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2781)
        at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:2384)
        at org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1614)
        at com.aeroscout.mobileview.common.util.LogConfigurationHelper.configureLog4J2(LogConfigurationHelper.java:70)
        at com.aeroscout.mobileview.common.web.AeroscoutWebContextListener.configureLog4J2(AeroscoutWebContextListener.java:175)
        at com.aeroscout.mobileview.common.web.AeroscoutWebContextListener.contextInitialized(AeroscoutWebContextListener.java:121)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4059)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4501)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:603)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1175)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1888)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
        at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1086)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1584)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
        at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:721)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:211)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:874)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:739)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:569)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)

2025-03-26T13:35:34.793094Z main ERROR An exception occurred processing Appender NETWORK org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to TCP:127.0.0.1:1234560: socket not available
        at org.apache.logging.log4j.core.net.TcpSocketManager.write(TcpSocketManager.java:264)
        at org.apache.logging.log4j.core.appender.OutputStreamManager.write(OutputStreamManager.java:202)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.writeByteArrayToManager(AbstractOutputStreamAppender.java:236)
        at org.apache.logging.log4j.core.appender.SocketAppender.directEncodeEvent(SocketAppender.java:598)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:220)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:211)
        at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:133)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:124)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:88)
        at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:714)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:672)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:648)
        at org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:705)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:674)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:648)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:584)
        at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:92)
        at org.apache.logging.log4j.core.Logger.log(Logger.java:187)
        at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2904)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2857)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2839)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2781)
        at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:2384)
        at org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1614)
        at com.aeroscout.mobileview.common.util.LogConfigurationHelper.configureLog4J2(LogConfigurationHelper.java:70)
        at com.aeroscout.mobileview.common.web.AeroscoutWebContextListener.configureLog4J2(AeroscoutWebContextListener.java:175)
        at com.aeroscout.mobileview.common.web.AeroscoutWebContextListener.contextInitialized(AeroscoutWebContextListener.java:121)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4059)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4501)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:603)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1175)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1888)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
        at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1086)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1584)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
        at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:721)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:211)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:874)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:739)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:569)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)

15:35:34,796 INFO  [AssetManagerWebContextListener] [STARTUP] Start: Context asset-manager-web initialization.
2025-03-26T13:35:34.797095300Z main ERROR Unable to write to stream TCP:127.0.0.1:1234560 for appender NETWORK org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to TCP:127.0.0.1:1234560: socket not available
        at org.apache.logging.log4j.core.net.TcpSocketManager.write(TcpSocketManager.java:264)
        at org.apache.logging.log4j.core.appender.OutputStreamManager.write(OutputStreamManager.java:202)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.writeByteArrayToManager(AbstractOutputStreamAppender.java:236)
        at org.apache.logging.log4j.core.appender.SocketAppender.directEncodeEvent(SocketAppender.java:598)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:220)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:211)
        at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:133)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:124)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:88)
        at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:714)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:672)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:648)
        at org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:705)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:674)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:648)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:584)
        at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:92)
        at org.apache.logging.log4j.core.Logger.log(Logger.java:187)
        at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2904)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2857)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2839)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2629)
        at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:2392)
        at org.apache.logging.slf4j.Log4jLogger.info(Log4jLogger.java:188)
        at com.aeroscout.mobileview.common.util.StartupUtils.start(StartupUtils.java:48)
        at com.aeroscout.mobileview.common.web.AeroscoutWebContextListener.contextInitialized(AeroscoutWebContextListener.java:123)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4059)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4501)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:603)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1175)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1888)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
        at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1086)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1584)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
        at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:721)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:211)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:874)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:739)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:569)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)

2025-03-26T13:35:34.799101Z main ERROR An exception occurred processing Appender NETWORK org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to TCP:127.0.0.1:1234560: socket not available
        at org.apache.logging.log4j.core.net.TcpSocketManager.write(TcpSocketManager.java:264)
        at org.apache.logging.log4j.core.appender.OutputStreamManager.write(OutputStreamManager.java:202)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.writeByteArrayToManager(AbstractOutputStreamAppender.java:236)
        at org.apache.logging.log4j.core.appender.SocketAppender.directEncodeEvent(SocketAppender.java:598)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:220)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:211)
        at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:133)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:124)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:88)
        at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:714)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:672)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:648)
        at org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:705)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:674)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:648)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:584)
        at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:92)
        at org.apache.logging.log4j.core.Logger.log(Logger.java:187)
        at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2904)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2857)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2839)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2629)
        at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:2392)
        at org.apache.logging.slf4j.Log4jLogger.info(Log4jLogger.java:188)
        at com.aeroscout.mobileview.common.util.StartupUtils.start(StartupUtils.java:48)
        at com.aeroscout.mobileview.common.web.AeroscoutWebContextListener.contextInitialized(AeroscoutWebContextListener.java:123)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4059)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4501)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:603)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1175)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1888)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
        at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1086)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1584)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
        at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:721)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:211)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:874)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:739)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:569)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)

Reproduction

My log4j2 configuration has a Socket appender

<Socket name="NETWORK"
        host="127.0.0.1" port="1234560" protocol="TCP"
        immediateFlush="false" bufferedIo="true" bufferSize="204800"
        immediateFail="false" reconnectDelayMillis="30000">
    <JsonLayout properties="true"/>
</Socket>

When there are network problems, it fails with exception "Unable to write to stream TCP:127.0.0.1:1234560 for appender". When I set status logging to OFF I expect those errors to disappear from my console. Instead something weird happens: instead of printing those exceptions right away on configuration loading, the app starts working without them, but then prints them anyways 20-30 seconds later.

@ppkarwasz
Copy link
Contributor

ppkarwasz commented Mar 26, 2025

@voddan,

Can you add more context, what kind of application are you running? JAVA_OPTS is supported only by some Java applications, unlike JAVA_TOOL_OPTIONS, which is interpreted by newer JVMs (see this SO question).

Did you try:

set LOG4J_STATUS_LOGGER_LEVEL=OFF

?
Unless I am mistaken, the Windows set command will consider double quotes " as part of the argument, so:

set JAVA_OPTS=%JAVA_OPTS% -Dlog4j2.StatusLogger.level="OFF"

will actually set the log4j2.StatusLogger.level to "OFF" (double quotes included). If you want to go this way use:

set JAVA_OPTS=%JAVA_OPTS% -Dlog4j2.statusLoggerLevel=OFF

(the proper capitalization of the property is log4j2.statusLoggerLevel; since version 2.24.0 only log4j2.statusLoggerLevel and its legacy version log4j2.StatusLogger.level work).

@ppkarwasz ppkarwasz added waiting-for-user More information is needed from the user and removed waiting-for-maintainer labels Mar 27, 2025
@vy
Copy link
Member

vy commented Mar 27, 2025

@voddan, judging from your earlier tickets on customizing the Status Logger behavior, and then here asking for how to disable the status logger, IMHO, you're trying to fix the wrong thing. There is a network connectivity issue, and your appender is reporting its failing state – this is all normal. I assume, in an ideal environment network connectivity should be pretty stable. If in your environment it is not, you might consider introducing a Failover Appender. This said, the Socket Appender (i.e., AbstractOutputStreamAppender) will still dump the Unable to write to stream to the status logger anyway. I think we can indeed improve there. Instead of log + throw (which is the case right now), we can switch the behavior to just throw. @ppkarwasz, WDYT?

@voddan
Copy link
Author

voddan commented Mar 27, 2025

@vy You are right in that I have a bigger problem than described in this ticket. I created separate tickets because several approaches to it did not work. Ideally, I would like to be able to turn off StatusLogging completely, independent of the bigger picture, and this is what this ticket is about.

you might consider introducing a Failover Appender. This said, the Socket Appender (i.e., AbstractOutputStreamAppender) will still dump the Unable to write to stream to the status logger anyway

That's exactly what I found out in my testing - having a Failover does not help with StatusLogger spamming to the console. If you create a ticket about that problem, please link it here and I will upvote it!

@github-actions github-actions bot added waiting-for-maintainer and removed waiting-for-user More information is needed from the user labels Mar 27, 2025
@vy
Copy link
Member

vy commented Mar 27, 2025

@voddan, please follow the assistance @ppkarwasz has kindly provided above, and let us know of the outcome. If it doesn't work for you, you might want to troubleshoot how StatusLogger.Config is instantiated by plugging in a debugger and stepping through its constructors.

@vy vy added api Affects the public API waiting-for-user More information is needed from the user and removed waiting-for-maintainer labels Mar 27, 2025
@voddan
Copy link
Author

voddan commented Mar 27, 2025

@ppkarwasz

Thank you for detailed suggestions, however I tried all the variations you mentioned, with the same effect - StatusLogger still prints to Console after about 20-25 seconds after startup.

JAVA_OPTS is supported only by some Java applications, unlike JAVA_TOOL_OPTIONS, which is interpreted by newer JVMs

I think we use both JAVA_OPTS and JAVA_TOOL_OPTIONS with no issues in other places in our application. You can also see from the log below that JVM parameters do get passed.

Here is the start of the logs until log4j is configured, with some parts redacted out for security:

NOTE: Picked up JDK_JAVA_OPTIONS:  ...
Picked up JAVA_TOOL_OPTIONS: -Duser.home=X:\tools
Listening for transport dt_socket at address: ....
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version name:   Apache Tomcat/9.0.102
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Mar 3 2025 19:33:14 UTC
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version number: 9.0.102.0
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Windows 11
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            10.0
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             X:\dev\mv-ref\mobileview\build\target\mv\jre
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           17.0.13+11-LTS
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Amazon.com Inc.
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         X:\dev\mv-ref\mobileview\build\target\mv\services\asset-manager\tomcat
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         X:\dev\mv-ref\mobileview\build\target\mv\services\asset-manager\tomcat
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Duser.home=X:\tools
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: ....
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dnop
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -agentlib:jdwp=transport=dt_socket,address=*:....,server=y,suspend=n
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dlog4j2.StatusLogger.level=OFF
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dlog4j2.StatusLoggerLevel=OFF
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dlog4j2.statusLoggerLevel=OFF
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Xms2048m
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Xmx2048m
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.library.path=./x64
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -XX:-OmitStackTraceInFastThrow
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -XX:+HeapDumpOnOutOfMemoryError
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -XX:+UseG1GC
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -XX:MaxGCPauseMillis=1000
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dlog4j2.isThreadContextMapInheritable=true
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dorg.apache.el.parser.COERCE_TO_ZERO=false
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dsun.io.useCanonCaches=false
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dignore.endorsed.dirs=
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=X:\dev\mv-ref\mobileview\build\target\mv\services\asset-manager\tomcat
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=X:\dev\mv-ref\mobileview\build\target\mv\services\asset-manager\tomcat
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.io.tmpdir=X:\dev\mv-ref\mobileview\build\target\mv\services\asset-manager\tomcat\temp
12:27:48,405 INFO  [Log4jHandler] Configured log4j2 from locations [file:/X:/dev/mv-ref/mobileview/build/target/mv/services/asset-manager/tomcat/bin/../conf/log4j2.xml]; last added was X:\dev\mv-ref\mobileview\build\target\mv\services\asset-manager\tomcat\bin\..\conf\log4j2.xml
12:28:18,414 INFO  [Log4jHandler] Log4j2 Initialized
.....

@github-actions github-actions bot added waiting-for-maintainer and removed waiting-for-user More information is needed from the user labels Mar 27, 2025
@voddan
Copy link
Author

voddan commented Mar 27, 2025

@vy let me know if you need more logging output in addition to what I already posted. I am willing to help you to reproduce this behavior on your end. However please spare me debugging library code I have no expertise in.

@ppkarwasz
Copy link
Contributor

@voddan,

Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dlog4j2.StatusLogger.level=OFF
Mar 27, 2025 12:27:48 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dlog4j2.statusLoggerLevel=OFF

Either one of these should be OK. Are you still experiencing problems? You can force a status logger ERROR by adding an uknown XML tag in your configuration, e.g. <UknownTag/>.

Note that these messages do not come from status logger.

12:27:48,405 INFO  [Log4jHandler] Configured log4j2 from locations [file:/X:/dev/mv-ref/mobileview/build/target/mv/services/asset-manager/tomcat/bin/../conf/log4j2.xml]; last added was X:\dev\mv-ref\mobileview\build\target\mv\services\asset-manager\tomcat\bin\..\conf\log4j2.xml
12:28:18,414 INFO  [Log4jHandler] Log4j2 Initialized
.....

@ppkarwasz ppkarwasz added waiting-for-user More information is needed from the user and removed waiting-for-maintainer labels Mar 27, 2025
@ppkarwasz ppkarwasz moved this from To triage to Backlog in Log4j bug tracker Mar 27, 2025
@ppkarwasz
Copy link
Contributor

This said, the Socket Appender (i.e., AbstractOutputStreamAppender) will still dump the Unable to write to stream to the status logger anyway. I think we can indeed improve there. Instead of log + throw (which is the case right now), we can switch the behavior to just throw. @ppkarwasz, WDYT?

I agree, exceptions should not be logged, but wrapped in an AppenderLoggingException and rethrown. At the end there is an (currently non-customizable) ErrorHandler that can decide what to do with them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api Affects the public API waiting-for-user More information is needed from the user
Projects
Status: Backlog
Development

No branches or pull requests

3 participants