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 codewaiting-for-maintainer

Type

Projects

Status

In review

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions