Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 10 additions & 14 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
<plugin>
Expand Down Expand Up @@ -99,25 +99,21 @@
</build>
<dependencies>
<dependency>
<groupId>net.minidev</groupId>
<artifactId>json-smart</artifactId>
<version>1.1.1</version>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20240303</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<version>1.2.17</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.10.2</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
53 changes: 22 additions & 31 deletions src/main/java/net/logstash/log4j/JSONEventLayoutV0.java
Original file line number Diff line number Diff line change
@@ -1,42 +1,34 @@
package net.logstash.log4j;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import net.logstash.log4j.data.HostData;
import net.minidev.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.FastDateFormat;
import org.apache.log4j.Layout;
import org.apache.log4j.spi.LocationInfo;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.ThrowableInformation;

import java.util.HashMap;
import java.util.Map;
import java.util.TimeZone;
import org.json.JSONObject;

public class JSONEventLayoutV0 extends Layout {

private boolean locationInfo = false;
private boolean locationInfo;

private String tags;
private boolean ignoreThrowable = false;
private final String hostname = new HostData().getHostName();

private boolean activeIgnoreThrowable = ignoreThrowable;
private String hostname = new HostData().getHostName();
private String threadName;
private long timestamp;
private String ndc;
private Map mdc;
private LocationInfo info;
private HashMap<String, Object> fieldData;
private HashMap<String, Object> exceptionInformation;

private JSONObject logstashEvent;

public static final TimeZone UTC = TimeZone.getTimeZone("UTC");
public static final FastDateFormat ISO_DATETIME_TIME_ZONE_FORMAT_WITH_MILLIS = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", UTC);
public static final DateTimeFormatter ISO_DATETIME_TIME_ZONE_FORMAT_WITH_MILLIS = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

public static String dateFormat(long timestamp) {
return ISO_DATETIME_TIME_ZONE_FORMAT_WITH_MILLIS.format(timestamp);
Instant instant = Instant.ofEpochMilli(timestamp);
ZoneId zoneId = ZoneId.of("UTC");
LocalDateTime localDate = instant.atZone(zoneId).toLocalDateTime();
return localDate.format(ISO_DATETIME_TIME_ZONE_FORMAT_WITH_MILLIS);
}

/**
Expand All @@ -57,14 +49,14 @@ public JSONEventLayoutV0(boolean locationInfo) {
}

public String format(LoggingEvent loggingEvent) {
threadName = loggingEvent.getThreadName();
timestamp = loggingEvent.getTimeStamp();
fieldData = new HashMap<String, Object>();
exceptionInformation = new HashMap<String, Object>();
mdc = loggingEvent.getProperties();
ndc = loggingEvent.getNDC();
String threadName = loggingEvent.getThreadName();
long timestamp = loggingEvent.getTimeStamp();
fieldData = new HashMap<>();
HashMap<String, Object> exceptionInformation = new HashMap<>();
Map mdc = loggingEvent.getProperties();
String ndc = loggingEvent.getNDC();

logstashEvent = new JSONObject();
JSONObject logstashEvent = new JSONObject();

logstashEvent.put("@source_host", hostname);
logstashEvent.put("@message", loggingEvent.getRenderedMessage());
Expand All @@ -79,14 +71,14 @@ public String format(LoggingEvent loggingEvent) {
exceptionInformation.put("exception_message", throwableInformation.getThrowable().getMessage());
}
if (throwableInformation.getThrowableStrRep() != null) {
String stackTrace = StringUtils.join(throwableInformation.getThrowableStrRep(), "\n");
String stackTrace = String.join("\n", throwableInformation.getThrowableStrRep());
exceptionInformation.put("stacktrace", stackTrace);
}
addFieldData("exception", exceptionInformation);
}

if (locationInfo) {
info = loggingEvent.getLocationInformation();
LocationInfo info = loggingEvent.getLocationInformation();
addFieldData("file", info.getFileName());
addFieldData("line_number", info.getLineNumber());
addFieldData("class", info.getClassName());
Expand All @@ -104,7 +96,7 @@ public String format(LoggingEvent loggingEvent) {
}

public boolean ignoresThrowable() {
return ignoreThrowable;
return false;
}

/**
Expand All @@ -126,7 +118,6 @@ public void setLocationInfo(boolean locationInfo) {
}

public void activateOptions() {
activeIgnoreThrowable = ignoreThrowable;
}

private void addFieldData(String keyname, Object keyval) {
Expand Down
50 changes: 22 additions & 28 deletions src/main/java/net/logstash/log4j/JSONEventLayoutV1.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package net.logstash.log4j;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import net.logstash.log4j.data.HostData;
import net.minidev.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.FastDateFormat;
import org.apache.log4j.Layout;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.spi.LocationInfo;
Expand All @@ -12,34 +13,28 @@

import java.util.HashMap;
import java.util.Map;
import java.util.TimeZone;
import org.json.JSONObject;

public class JSONEventLayoutV1 extends Layout {

private boolean locationInfo = false;
private String customUserFields;
private boolean locationInfo;

private boolean ignoreThrowable = false;
private String customUserFields;

private boolean activeIgnoreThrowable = ignoreThrowable;
private String hostname = new HostData().getHostName();
private String threadName;
private long timestamp;
private String ndc;
private Map mdc;
private LocationInfo info;
private HashMap<String, Object> exceptionInformation;
private static Integer version = 1;
private final String hostname = new HostData().getHostName();

private static final Integer version = 1;

private JSONObject logstashEvent;

public static final TimeZone UTC = TimeZone.getTimeZone("UTC");
public static final FastDateFormat ISO_DATETIME_TIME_ZONE_FORMAT_WITH_MILLIS = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", UTC);
public static final DateTimeFormatter ISO_DATETIME_TIME_ZONE_FORMAT_WITH_MILLIS = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
public static final String ADDITIONAL_DATA_PROPERTY = "net.logstash.log4j.JSONEventLayoutV1.UserFields";

public static String dateFormat(long timestamp) {
return ISO_DATETIME_TIME_ZONE_FORMAT_WITH_MILLIS.format(timestamp);
Instant instant = Instant.ofEpochMilli(timestamp);
ZoneId zoneId = ZoneId.of("UTC");
LocalDateTime localDate = instant.atZone(zoneId).toLocalDateTime();
return localDate.format(ISO_DATETIME_TIME_ZONE_FORMAT_WITH_MILLIS);
}

/**
Expand All @@ -60,11 +55,11 @@ public JSONEventLayoutV1(boolean locationInfo) {
}

public String format(LoggingEvent loggingEvent) {
threadName = loggingEvent.getThreadName();
timestamp = loggingEvent.getTimeStamp();
exceptionInformation = new HashMap<String, Object>();
mdc = loggingEvent.getProperties();
ndc = loggingEvent.getNDC();
String threadName = loggingEvent.getThreadName();
long timestamp = loggingEvent.getTimeStamp();
HashMap<String, Object> exceptionInformation = new HashMap<>();
Map mdc = loggingEvent.getProperties();
String ndc = loggingEvent.getNDC();

logstashEvent = new JSONObject();
String whoami = this.getClass().getSimpleName();
Expand Down Expand Up @@ -114,14 +109,14 @@ public String format(LoggingEvent loggingEvent) {
exceptionInformation.put("exception_message", throwableInformation.getThrowable().getMessage());
}
if (throwableInformation.getThrowableStrRep() != null) {
String stackTrace = StringUtils.join(throwableInformation.getThrowableStrRep(), "\n");
String stackTrace = String.join("\n", throwableInformation.getThrowableStrRep());
exceptionInformation.put("stacktrace", stackTrace);
}
addEventData("exception", exceptionInformation);
}

if (locationInfo) {
info = loggingEvent.getLocationInformation();
LocationInfo info = loggingEvent.getLocationInformation();
addEventData("file", info.getFileName());
addEventData("line_number", info.getLineNumber());
addEventData("class", info.getClassName());
Expand All @@ -138,7 +133,7 @@ public String format(LoggingEvent loggingEvent) {
}

public boolean ignoresThrowable() {
return ignoreThrowable;
return false;
}

/**
Expand All @@ -163,7 +158,6 @@ public void setLocationInfo(boolean locationInfo) {
public void setUserFields(String userFields) { this.customUserFields = userFields; }

public void activateOptions() {
activeIgnoreThrowable = ignoreThrowable;
}

private void addUserFields(String data) {
Expand Down
Loading