Skip to content

Commit 3c167b6

Browse files
committed
Add Logging:
* JSON format for the stdout in production environment in order to capture it while running on Docker/Kubernetes * Readable format for the stdout in test environment in order to easily debug issues
1 parent b188875 commit 3c167b6

File tree

6 files changed

+83
-2
lines changed

6 files changed

+83
-2
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ build/
55
# Ignore Gradle GUI config
66
gradle-app.setting
77

8+
var/log/*
9+
!var/log/.gitkeep

build.gradle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ repositories {
88
}
99

1010
dependencies {
11-
testCompile('org.junit.jupiter:junit-jupiter-api:5.5.1')
12-
testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.5.1')
11+
implementation 'org.apache.logging.log4j:log4j-core:2.12.1'
12+
implementation 'com.vlkan.log4j2:log4j2-logstash-layout:0.19'
13+
14+
testCompile 'org.junit.jupiter:junit-jupiter-api:5.5.1'
15+
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
1316
}
1417

1518
test {

src/main/resources/log4j2.properties

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name = CodelyTvJavaBasicSkeleton
2+
property.filename = logs
3+
appenders = console, file
4+
5+
status = warn
6+
7+
appender.console.name = CONSOLE
8+
appender.console.type = CONSOLE
9+
appender.console.target = SYSTEM_OUT
10+
11+
appender.console.logstash.type = LogstashLayout
12+
appender.console.logstash.dateTimeFormatPattern = yyyy-MM-dd'T'HH:mm:ss.SSSZZZ
13+
appender.console.logstash.eventTemplateUri = classpath:LogstashJsonEventLayoutV1.json
14+
appender.console.logstash.prettyPrintEnabled = true
15+
appender.console.logstash.stackTraceEnabled = true
16+
17+
appender.file.type = File
18+
appender.file.name = LOGFILE
19+
appender.file.fileName=var/log/java-basic-skeleton.log
20+
appender.file.logstash.type=LogstashLayout
21+
appender.file.logstash.dateTimeFormatPattern = yyyy-MM-dd'T'HH:mm:ss.SSSZZZ
22+
appender.file.logstash.eventTemplateUri = classpath:LogstashJsonEventLayoutV1.json
23+
appender.file.logstash.prettyPrintEnabled = false
24+
appender.file.logstash.stackTraceEnabled = true
25+
26+
loggers = file
27+
logger.file.name = tv.codely.java_basic_skeleton
28+
logger.file.level = info
29+
logger.file.appenderRefs = file
30+
logger.file.appenderRef.file.ref = LOGFILE
31+
32+
rootLogger.level = info
33+
rootLogger.appenderRefs = stdout
34+
rootLogger.appenderRef.stdout.ref = CONSOLE

src/test/java/tv/codely/java_basic_skeleton/GreeterShould.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44

5+
import org.apache.logging.log4j.LogManager;
6+
import org.apache.logging.log4j.Logger;
57
import org.junit.jupiter.api.Test;
68

79
public class GreeterShould {
@@ -12,4 +14,11 @@ void greet_with_a_hello_message_to_the_name_it_receives() {
1214
assertEquals("Hello Jhon", greeter.greet("Jhon"));
1315
}
1416

17+
@Test
18+
void save_logs_to_the_file() {
19+
Logger logger = LogManager.getLogger(GreeterShould.class);
20+
RuntimeException error = new RuntimeException("exceptioooon");
21+
logger.error("Hello error world!", error);
22+
}
23+
1524
}

src/test/resources/log4j2.properties

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name = CodelyTvJavaBasicSkeleton
2+
property.filename = logs
3+
appenders = console, file
4+
5+
status = warn
6+
7+
appender.console.name = CONSOLE
8+
appender.console.type = CONSOLE
9+
appender.console.target = SYSTEM_OUT
10+
11+
appender.console.layout.type = PatternLayout
12+
appender.console.layout.pattern = [%level] [%date{HH:mm:ss.SSS}] [%class{0}#%method:%line] %message \(%mdc\) %n%throwable
13+
appender.console.filter.threshold.type = ThresholdFilter
14+
appender.console.filter.threshold.level = info
15+
16+
appender.file.type = File
17+
appender.file.name = LOGFILE
18+
appender.file.fileName=var/log/java-basic-skeleton-test.log
19+
appender.file.logstash.type=LogstashLayout
20+
appender.file.logstash.dateTimeFormatPattern = yyyy-MM-dd'T'HH:mm:ss.SSSZZZ
21+
appender.file.logstash.eventTemplateUri = classpath:LogstashJsonEventLayoutV1.json
22+
appender.file.logstash.prettyPrintEnabled = false
23+
appender.file.logstash.stackTraceEnabled = true
24+
25+
loggers = file
26+
logger.file.name = tv.codely.java_basic_skeleton
27+
logger.file.level = info
28+
logger.file.appenderRefs = file
29+
logger.file.appenderRef.file.ref = LOGFILE
30+
31+
rootLogger.level = info
32+
rootLogger.appenderRefs = stdout
33+
rootLogger.appenderRef.stdout.ref = CONSOLE

var/log/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)