Skip to content
Advertisement

Unable to send the logs to Splunk Enterprise local using log4j2

I’m using log4j2 and splunk within java to send logs into my Splunk Enterprise HEC (HTTP Event Collector) Splunk Enterprise is running in my local machine.

I’m doing all log4j2 configuration programmatically. (I know this is not the correct way to do this but I’m still doing this for learning purpose).

I tried to send the logs into Splunk Enterprise directly from postman with the same URL and token and it works fine, but when I tried to send the logs from java using log4j2 I don’t get anything in splunk.

My code is =>

JavaScript

my POM file

JavaScript

I cannot see any logs in splunk. Did I miss something ?

Advertisement

Answer

Add .addAttribute("batch_size_count", "1") or make a loop producing 10 log messages, becasue that’s the default value of batch_size_count. This has been explained in splunk docs “Configure Log4j 2” section.

By the way, I reckon the services/collector endpoint should be used with JSON messages (e.g. .add(builder.newLayout("JSONLayout"))). Also, you are using a log4j2 version that has the Log4Shell (CVE-2021-44228) vulnerability. It has been fixed in 2.15.0, switch to anything between that and the newest version 2.17.2.

Finally, I share the sentiment of the answers to the question How to configure log4j 2.x purely programmatically? that log4j2 is troublesome to use when configured programmatically. I had issues with it in a cluster env and switching to file configuration solved all my problems.

User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement