Skip to content

Commit c5a39a9

Browse files
authored
Merge pull request #1 from avaje/feature/format-timestamp
Change property name to logger.format from logger.writer
2 parents 2fc1833 + ee25804 commit c5a39a9

File tree

6 files changed

+29
-13
lines changed

6 files changed

+29
-13
lines changed

avaje-simple-json-logger/src/main/java/io/avaje/simplelogger/encoder/Bootstrap.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ public final class Bootstrap {
1616

1717
public static LoggerContext init() {
1818
Properties properties = loadProperties();
19-
String writerType = properties.getProperty("logger.writer", "json");
20-
LogWriter logWriter = createWriter(properties, writerType);
19+
LogWriter logWriter = createWriter(properties, logFormat(properties));
2120

2221
String info = properties.getProperty("logger.defaultLogLevel", "info");
2322
int defaultLevel = SimpleLoggerFactory.stringToLevel(info);
@@ -29,6 +28,10 @@ public static LoggerContext init() {
2928
return new SimpleLoggerFactory(logWriter, abbreviator, defaultLevel, nameLevels);
3029
}
3130

31+
private static String logFormat(Properties properties) {
32+
return properties.getProperty("logger.format", "json");
33+
}
34+
3235
private static Map<String, String> initialNameLevels(Properties properties) {
3336
Map<String, String> nameLevels = new HashMap<>();
3437
for (String key : properties.stringPropertyNames()) {
@@ -47,8 +50,8 @@ private static LogWriter createWriter(Properties properties, String writerType)
4750
final TimeZone timeZone = TimeZoneUtils.parseTimeZone(property(properties, "logger.timezone"));
4851
final String timestampPattern = property(properties, "logger.timestampPattern");
4952
if ("plain".equalsIgnoreCase(writerType)) {
50-
final DateTimeFormatter formatter = TimeZoneUtils.formatter(timestampPattern, timeZone.toZoneId());
51-
final boolean showThreadName = Boolean.parseBoolean(Eval.eval(properties.getProperty("logger.showThreadName")));
53+
final DateTimeFormatter formatter = TimeZoneUtils.plainFormatter(timestampPattern, timeZone.toZoneId());
54+
final boolean showThreadName = propertyShowThreadName(properties);
5255
return new PlainLogWriter(target, formatter, showThreadName);
5356
}
5457
var jsonEncoder = new JsonEncoderBuilder()
@@ -65,6 +68,10 @@ private static String property(Properties properties, String key) {
6568
return Eval.eval(properties.getProperty(key));
6669
}
6770

71+
private static boolean propertyShowThreadName(Properties properties) {
72+
return Boolean.parseBoolean(Eval.eval(properties.getProperty("logger.showThreadName", "true")));
73+
}
74+
6875
private static Properties loadProperties() {
6976
final var properties = new Properties();
7077
load(properties, "avaje-logger.properties");

avaje-simple-json-logger/src/main/java/io/avaje/simplelogger/encoder/JsonEncoder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import org.slf4j.helpers.MessageFormatter;
88

99
import java.io.ByteArrayOutputStream;
10-
import java.time.Instant;
10+
import java.time.OffsetDateTime;
1111
import java.time.format.DateTimeFormatter;
1212
import java.util.Map;
1313

@@ -63,10 +63,10 @@ byte[] encode(String loggerName, Level level, String messagePattern, Object[] ar
6363
writer.value(environment);
6464
}
6565
writer.name(2);
66-
writer.value(formatter.format(Instant.now()));
66+
writer.value(formatter.format(OffsetDateTime.now()));
6767
writer.name(3);
6868
writer.value(level.toString());
69-
writer.name(4);//
69+
writer.name(4);
7070
writer.value(loggerName);
7171
writer.name(5);
7272
writer.value(message);

avaje-simple-json-logger/src/main/java/io/avaje/simplelogger/encoder/JsonEncoderBuilder.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,7 @@ JsonEncoder build() {
9696
if (stackHasher == null) {
9797
stackHasher = new StackHasher(StackElementFilter.builder().allFilters().build());
9898
}
99-
100-
final DateTimeFormatter formatter = TimeZoneUtils.formatter(timestampPattern, timeZone.toZoneId());
99+
final DateTimeFormatter formatter = TimeZoneUtils.jsonFormatter(timestampPattern, timeZone.toZoneId());
101100
return new JsonEncoder(json, component, environment, stackHasher, formatter, includeStackHash, customFieldsMap, throwableConverter);
102101
}
103102

avaje-simple-json-logger/src/main/java/io/avaje/simplelogger/encoder/TimeZoneUtils.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,21 @@ static TimeZone parseTimeZone(String str) {
4444
return tz;
4545
}
4646

47-
static DateTimeFormatter formatter(String pattern, ZoneId zoneId) {
48-
if (pattern == null) {
47+
static DateTimeFormatter jsonFormatter(String timestampPattern, ZoneId zoneId) {
48+
if (timestampPattern == null) {
4949
return DateTimeFormatter.ISO_OFFSET_DATE_TIME.withZone(zoneId);
5050
}
51+
return formatter(timestampPattern, zoneId);
52+
}
53+
54+
static DateTimeFormatter plainFormatter(String timestampPattern, ZoneId zoneId) {
55+
if (timestampPattern == null) {
56+
return DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.SSS");
57+
}
58+
return formatter(timestampPattern, zoneId);
59+
}
5160

61+
private static DateTimeFormatter formatter(String pattern, ZoneId zoneId) {
5262
try {
5363
var time = TimePattern.valueOf(pattern.toUpperCase());
5464
switch (time) {

avaje-simple-json-logger/src/test/java/io/avaje/simplelogger/encoder/AcceptanceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class AcceptanceTest extends LoggerTestSuite {
1313

1414
@Override
1515
public Logger createLogger(ListAppendingOutputStream outputStream, Level level) {
16-
final DateTimeFormatter formatter = TimeZoneUtils.formatter(null, TimeZone.getDefault().toZoneId());
16+
final DateTimeFormatter formatter = TimeZoneUtils.jsonFormatter(null, TimeZone.getDefault().toZoneId());
1717
int logLevel = SimpleLoggerFactory.stringToLevel(level.toString());
1818
return new SimpleLogger(new PlainLogWriter(System.out, formatter, true), "TestSuiteLogger", "TestSuiteLogger", logLevel);
1919
}

avaje-simple-json-logger/src/test/resources/avaje-logger-test.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
logger.writer=plain
1+
logger.format=plain
22

33
# values - full, short, <int target length>
44
#logger.nameTargetLength=full

0 commit comments

Comments
 (0)