Skip to content

Sending Syslog via TLS not possible with only encryted TLS Channel without CERT AUTH #3947

@Tux12Fun

Description

@Tux12Fun

Description

I want to send my Logs to a Syslog Server that only uses Syslog via SSL no SSL-Certs for Authentication.

Documentation tells me that i can set only the Truststore. But if I do this i get errors for this Appender that Keystore is needed. But Keystore is optional in Doc. I don't want it because I only need a secure tunnel for the Logs.

See Doc: https://logging.apache.org/log4j/2.x/manual/appenders/network.html#tls-configuration
Keystore (none or one) <<< I wan't to set none

Configuration

Version: log4j-core-2.25.1
Operating system: Ubuntu 24.04

JDK: Runtime Environment (build 21.0.8+9-Ubuntu-0ubuntu124.04.1)

Logs

     <Syslog name="syslog"
              format="RFC5424"
              host="10.x.x.xxx"
              port="14514"
              protocol="SSL"
              id="MAIN_WORKER"
              enterpriseNumber="18060"
              appName="MAIN_WORKER"
              mdcId="Log4J2"
              includeMDC="true"
              facility="LOCAL7"
              newLine="true"
              newlineEscape="|__@NEWLINE@__|"
              reconnectionDelay="120"
              immediateFlush="false"
              ignoreExceptions="true">
      <Ssl>
              <TrustStore location="/usr/lib/jvm/java-21-openjdk-amd64/lib/security/cacerts" password="changeit"/>
      </Ssl>

          <LoggerFields>
              <KeyValuePair key="class"     value="%C"/>
              <KeyValuePair key="file"      value="%F"/>
              <KeyValuePair key="linenr"    value="%L"/>
              <KeyValuePair key="method"    value="%M"/>
              <KeyValuePair key="thread"    value="%t"/>
              <KeyValuePair key="priority"  value="%p"/>
              <KeyValuePair key="category"  value="%c"/>
              <KeyValuePair key="exception" value="%ex"/>
          </LoggerFields>
      </Syslog>

Logs

2025-10-07T12:38:30.100664+02:00 da1.test.local java[87895]: java.lang.NullPointerException: Cannot invoke "org.apache.logging.log4j.core.net.ssl.AbstractKeyStoreConfiguration.getKeyStore()" because "keyStoreConfig" is null
2025-10-07T12:38:30.100688+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.net.SslSocketManager.lambda$createSslConfigurationId$1(SslSocketManager.java:251)
2025-10-07T12:38:30.100704+02:00 da1.test.local java[87895]: #011at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
2025-10-07T12:38:30.100720+02:00 da1.test.local java[87895]: #011at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
2025-10-07T12:38:30.100735+02:00 da1.test.local java[87895]: #011at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2025-10-07T12:38:30.100750+02:00 da1.test.local java[87895]: #011at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2025-10-07T12:38:30.100764+02:00 da1.test.local java[87895]: #011at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
2025-10-07T12:38:30.100778+02:00 da1.test.local java[87895]: #011at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2025-10-07T12:38:30.100793+02:00 da1.test.local java[87895]: #011at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
2025-10-07T12:38:30.100808+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.net.SslSocketManager.createSslConfigurationId(SslSocketManager.java:279)
2025-10-07T12:38:30.100823+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.net.SslSocketManager.getSocketManager(SslSocketManager.java:222)
2025-10-07T12:38:30.100851+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.appender.SocketAppender.createSocketManager(SocketAppender.java:579)
2025-10-07T12:38:30.100865+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.appender.SyslogAppender$Builder.build(SyslogAppender.java:151)
2025-10-07T12:38:30.100880+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.appender.SyslogAppender$Builder.build(SyslogAppender.java:49)
2025-10-07T12:38:30.100894+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:124)
2025-10-07T12:38:30.100913+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1206)
2025-10-07T12:38:30.100933+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1125)
2025-10-07T12:38:30.100976+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1117)
2025-10-07T12:38:30.100994+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:715)
2025-10-07T12:38:30.101009+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:271)
2025-10-07T12:38:30.101024+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:324)
2025-10-07T12:38:30.101040+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:697)
2025-10-07T12:38:30.101057+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:786)
2025-10-07T12:38:30.101077+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:808)
2025-10-07T12:38:30.101092+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:311)
2025-10-07T12:38:30.101106+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:264)
2025-10-07T12:38:30.101120+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:48)
2025-10-07T12:38:30.101136+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.LogManager.getContext(LogManager.java:119)
2025-10-07T12:38:30.101153+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:624)
2025-10-07T12:38:30.101167+02:00 da1.test.local java[87895]: #011at main_worker.MAIN_WORKER.<clinit>(MAIN_WORKER.java:226)
2025-10-07T12:38:30.101185+02:00 da1.test.local java[87895]: 2025-10-07T10:38:30.100273465Z main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.SyslogAppender for element Syslog: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.SyslogAppender
2025-10-07T12:38:30.101203+02:00 da1.test.local java[87895]: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.SyslogAppender
2025-10-07T12:38:30.101221+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:268)
2025-10-07T12:38:30.101252+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:140)
2025-10-07T12:38:30.101266+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1206)
2025-10-07T12:38:30.101281+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1125)
2025-10-07T12:38:30.101301+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1117)
2025-10-07T12:38:30.101316+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:715)
2025-10-07T12:38:30.101330+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:271)
2025-10-07T12:38:30.101348+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:324)
2025-10-07T12:38:30.101363+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:697)
2025-10-07T12:38:30.101377+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:786)
2025-10-07T12:38:30.101390+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:808)
2025-10-07T12:38:30.101404+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:311)
2025-10-07T12:38:30.101417+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:264)
2025-10-07T12:38:30.101431+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:48)
2025-10-07T12:38:30.101445+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.LogManager.getContext(LogManager.java:119)
2025-10-07T12:38:30.101458+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:624)
2025-10-07T12:38:30.101472+02:00 da1.test.local java[87895]: #011at main_worker.MAIN_WORKER.<clinit>(MAIN_WORKER.java:226)
2025-10-07T12:38:30.105334+02:00 da1.test.local java[87895]: 2025-10-07T10:38:30.105162509Z main ERROR Null object returned for Syslog in Appenders.
2025-10-07T12:38:30.109128+02:00 da1.test.local java[87895]: 2025-10-07T10:38:30.109004965Z main INFO Starting configuration XmlConfiguration[location=/home/data_exchange/daex/MAIN_WORKER/log4j2.xml, lastModified=2025-10-07T10:38:15.951Z]...
2025-10-07T12:38:30.109364+02:00 da1.test.local java[87895]: 2025-10-07T10:38:30.109277378Z main INFO Start watching for changes to [/home/data_exchange/daex/MAIN_WORKER/log4j2.xml] every 120 seconds
2025-10-07T12:38:30.111050+02:00 da1.test.local java[87895]: 2025-10-07T10:38:30.110949904Z main ERROR No appender named syslog was configured
2025-10-07T12:38:30.111246+02:00 da1.test.local java[87895]: Exception in thread "main" java.lang.ExceptionInInitializerError
2025-10-07T12:38:30.111285+02:00 da1.test.local java[87895]: Caused by: org.apache.logging.log4j.core.config.ConfigurationException: No appenders are available for AsyncAppender AsyncSyslog
2025-10-07T12:38:30.111309+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.appender.AsyncAppender.start(AsyncAppender.java:123)
2025-10-07T12:38:30.111325+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:344)
2025-10-07T12:38:30.111353+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:697)
2025-10-07T12:38:30.111369+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:786)
2025-10-07T12:38:30.111384+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:808)
2025-10-07T12:38:30.111406+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:311)
2025-10-07T12:38:30.111421+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:264)
2025-10-07T12:38:30.111435+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:48)
2025-10-07T12:38:30.111449+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.LogManager.getContext(LogManager.java:119)
2025-10-07T12:38:30.111469+02:00 da1.test.local java[87895]: #011at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:624)
2025-10-07T12:38:30.111484+02:00 da1.test.local java[87895]: #011at main_worker.MAIN_WORKER.<clinit>(MAIN_WORKER.java:226)
2025-10-07T12:38:30.141806+02:00 da1.test.local systemd[1]: ce_main_worker.service: Main process exited, code=exited, status=1/FAILURE
2025-10-07T12:38:30.141996+02:00 da1.test.local systemd[1]: ce_main_worker.service: Failed with result 'exit-code'.

Reproduction

[An isolated test reproducing the test.
JUnit tests similar to the ones in the code base are extremely appreciated.]

Metadata

Metadata

Assignees

Labels

appendersAffects one or more Appender pluginsbugIncorrect, unexpected, or unintended behavior of existing code

Type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions