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
13 changes: 12 additions & 1 deletion slf4j-simple/src/main/java/org/slf4j/simple/SimpleLogger.java
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,8 @@ static void init() {

public static final String DEFAULT_LOG_LEVEL_KEY = SimpleLogger.SYSTEM_PREFIX + "defaultLogLevel";

public static final String CLOUDWATCH_NEWLINE_FIX = SimpleLogger.SYSTEM_PREFIX + "cloudwatchNewlineFix";

/**
* Protected access allows only {@link SimpleLoggerFactory} and also derived classes to instantiate
* SimpleLogger instances.
Expand Down Expand Up @@ -258,7 +260,16 @@ void write(StringBuilder buf, Throwable t) {
PrintStream targetStream = CONFIG_PARAMS.outputChoice.getTargetPrintStream();

synchronized (CONFIG_PARAMS) {
targetStream.println(buf.toString());
if (CONFIG_PARAMS.cloudwatchNewlineFix) {
String message = buf.toString().replace('\n', CONFIG_PARAMS.CLOUDWATCH_NEWLINE_REPLACEMENT);

if (message.charAt(message.length() - 1) != CONFIG_PARAMS.CLOUDWATCH_NEWLINE_REPLACEMENT) {
message += CONFIG_PARAMS.CLOUDWATCH_NEWLINE_REPLACEMENT;
}
targetStream.print(message);
} else {
targetStream.println(buf.toString());
}
writeThrowable(t, targetStream);
targetStream.flush();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@ public class SimpleLoggerConfiguration {
private static final String WARN_LEVELS_STRING_DEFAULT = "WARN";
String warnLevelString = WARN_LEVELS_STRING_DEFAULT;

private static final boolean CLOUDWATCH_NEWLINE_FIX_DEFAULT = false;
boolean cloudwatchNewlineFix = CLOUDWATCH_NEWLINE_FIX_DEFAULT;
char CLOUDWATCH_NEWLINE_REPLACEMENT = '\r';

private final Properties properties = new Properties();

void init() {
Expand All @@ -89,6 +93,7 @@ void init() {
dateTimeFormatStr = getStringProperty(SimpleLogger.DATE_TIME_FORMAT_KEY, DATE_TIME_FORMAT_STR_DEFAULT);
levelInBrackets = getBooleanProperty(SimpleLogger.LEVEL_IN_BRACKETS_KEY, LEVEL_IN_BRACKETS_DEFAULT);
warnLevelString = getStringProperty(SimpleLogger.WARN_LEVEL_STRING_KEY, WARN_LEVELS_STRING_DEFAULT);
cloudwatchNewlineFix = getBooleanProperty(SimpleLogger.CLOUDWATCH_NEWLINE_FIX, CLOUDWATCH_NEWLINE_FIX_DEFAULT);

logFile = getStringProperty(SimpleLogger.LOG_FILE_KEY, logFile);

Expand Down
16 changes: 16 additions & 0 deletions slf4j-simple/src/test/java/org/slf4j/simple/ConfigParamsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

/**
Expand Down Expand Up @@ -48,6 +49,21 @@ public void simpleTest(){

String str0 = outputList.get(0);
assertTrue(str0.contains(WARN_LEVEL_STRING));
assertFalse(str0.endsWith("" + SimpleLogger.CONFIG_PARAMS.CLOUDWATCH_NEWLINE_REPLACEMENT));
}

@Test
public void cloudwatchNewlineFixTest(){
String WARN_LEVEL_STRING = "QWERTY";
ArrayList<String> outputList = new ArrayList<>();
SimpleLogger.CONFIG_PARAMS.cloudwatchNewlineFix = true;
Logger configuredLogger = createLogger(prepareSink(outputList), Level.TRACE, WARN_LEVEL_STRING);

configuredLogger.warn("This is\na test");

String str0 = outputList.get(0);
assertTrue(str0.endsWith("" + SimpleLogger.CONFIG_PARAMS.CLOUDWATCH_NEWLINE_REPLACEMENT));
assertFalse(str0.contains("\n"));
}

}
Loading