Skip to content

Commit

Permalink
Add header support for ProcessLogger
Browse files Browse the repository at this point in the history
  • Loading branch information
vkalapov committed Oct 28, 2024
1 parent a31d8d4 commit 26548c9
Showing 1 changed file with 32 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package org.cloudfoundry.multiapps.controller.persistence.services;

import java.util.Objects;
import java.util.UUID;

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
Expand All @@ -11,6 +8,9 @@
import org.apache.logging.log4j.message.ObjectMessage;
import org.cloudfoundry.multiapps.controller.persistence.model.OperationLogEntry;

import java.util.Objects;
import java.util.UUID;

public class ProcessLogger {

private final AbstractStringLayout layout;
Expand All @@ -20,6 +20,8 @@ public class ProcessLogger {
private OperationLogEntry operationLogEntry;
private String logMessage;

private boolean headerIsSet = false;

public ProcessLogger(OperationLogEntry operationLogEntry, String logName, AbstractStringLayout layout, String activityId) {
this.operationLogEntry = operationLogEntry;
this.layout = layout;
Expand Down Expand Up @@ -77,11 +79,13 @@ public OperationLogEntry getOperationLogEntry() {
}

private void createLogMessage(Object message, Level logLevel) {
logMessage = layout.toSerializable(createEvent(message, logLevel));
String formattedLogMessage = layout.toSerializable(createEvent((message), logLevel));
setLogMessage(formattedLogMessage);
}

private void createLogMessage(Object message, Level logLevel, Throwable t) {
logMessage = layout.toSerializable(createEvent(message, logLevel, t));
String formattedLogMessage = layout.toSerializable(createEvent(message, logLevel, t));
setLogMessage(formattedLogMessage);
}

private LogEvent createEvent(Object message, Level logLevel) {
Expand All @@ -92,16 +96,29 @@ private LogEvent createEvent(Object message, Level logLevel) {
// The StackTraceElement is required because there isn't a contructor that we can use without StackTraceElement
private LogEvent createEvent(Object message, Level logLevel, Throwable t) {
Message logMessage = new ObjectMessage(message);
StackTraceElement stackTrace = new StackTraceElement(null,
null,
null,
ProcessLoggerProvider.class.getName(),
logLevel.name(),
null,
StackTraceElement stackTrace = new StackTraceElement(null, null, null, ProcessLoggerProvider.class.getName(), logLevel.name(), null,
0);
return new Log4jLogEvent(logName, null, null, stackTrace, logLevel, logMessage, null, t);
}

private void setLogMessage(String formattedLogMessage) {
byte[] header = layout.getHeader();
if (header != null && !headerIsSet) {
setLogMessageWithHeader(formattedLogMessage, header);
} else {
logMessage = formattedLogMessage;
}
}

private void setLogMessageWithHeader(String formattedLogMessage, byte[] header) {
StringBuilder builder = new StringBuilder();
String headerString = new String(header);
builder.append(headerString);
builder.append(formattedLogMessage);
logMessage = builder.toString();
headerIsSet = true;
}

@Override
public boolean equals(Object incommingObject) {
if (this == incommingObject) {
Expand All @@ -111,9 +128,10 @@ public boolean equals(Object incommingObject) {
return false;
}
ProcessLogger processLogger = (ProcessLogger) incommingObject;
return Objects.equals(id, processLogger.id) && Objects.equals(layout, processLogger.layout)
&& Objects.equals(activityId, processLogger.activityId) && Objects.equals(logName, processLogger.logName)
&& Objects.equals(operationLogEntry, processLogger.operationLogEntry) && Objects.equals(logMessage, processLogger.logMessage);
return Objects.equals(id, processLogger.id) && Objects.equals(layout, processLogger.layout) && Objects.equals(activityId,
processLogger.activityId) && Objects.equals(
logName, processLogger.logName) && Objects.equals(operationLogEntry, processLogger.operationLogEntry) && Objects.equals(
logMessage, processLogger.logMessage);
}

@Override
Expand Down

0 comments on commit 26548c9

Please sign in to comment.