Skip to content

Commit 961b191

Browse files
Merge pull request #19 from mastodon-sc/add-logback
Add slf4j as logging framework (with logback as test-runtime dependency)
2 parents 54783c3 + f9dbdd1 commit 961b191

6 files changed

Lines changed: 181 additions & 3 deletions

File tree

.github/workflows/build.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# This workflow will build a Java project with Maven
2+
3+
name: Java CI with Maven
4+
5+
on:
6+
push:
7+
branches: [ "master" ]
8+
pull_request:
9+
branches: [ "master" ]
10+
11+
jobs:
12+
build:
13+
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- uses: actions/checkout@v2
18+
- name: Set up Java
19+
uses: actions/setup-java@v2
20+
with:
21+
java-version: '8'
22+
distribution: 'zulu'
23+
cache: 'maven'
24+
- name: Build with Maven
25+
run: mvn -B package --file pom.xml

.github/workflows/sonarcloud.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ jobs:
3939

4040
steps:
4141
- uses: actions/checkout@v2
42-
- name: Set up Java
42+
- name: Set up JDK 11
4343
uses: actions/setup-java@v2
4444
with:
45-
java-version: '8'
45+
java-version: '11'
4646
distribution: 'zulu'
4747
cache: 'maven'
4848

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ buildNumber.properties
99
.mvn/timing.properties
1010
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
1111
.mvn/wrapper/maven-wrapper.jar
12+
/logs/

pom.xml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,26 @@
6060
<artifactId>mastodon</artifactId>
6161
<version>${mastodon.version}</version>
6262
</dependency>
63+
64+
<!-- include simple logging facade for logging -->
65+
<dependency>
66+
<groupId>org.slf4j</groupId>
67+
<artifactId>slf4j-api</artifactId>
68+
</dependency>
69+
70+
<!-- include logback-classic at test runtime -->
71+
<dependency>
72+
<groupId>ch.qos.logback</groupId>
73+
<artifactId>logback-classic</artifactId>
74+
<scope>test</scope>
75+
</dependency>
76+
<!-- include logback-core at test runtime -->
77+
<dependency>
78+
<groupId>ch.qos.logback</groupId>
79+
<artifactId>logback-core</artifactId>
80+
<scope>test</scope>
81+
</dependency>
82+
6383
<dependency>
6484
<groupId>sc.fiji</groupId>
6585
<artifactId>spim_data</artifactId>
@@ -126,7 +146,7 @@
126146
<url>https://maven.scijava.org/content/groups/public</url>
127147
</repository>
128148
</repositories>
129-
149+
130150
<profiles>
131151
<profile>
132152
<id>coverage</id>

src/test/java/org/mastodon/mamut/deeplineage/StartImageJ.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@
3030

3131
import org.scijava.Context;
3232
import org.scijava.ui.UIService;
33+
import org.slf4j.Logger;
34+
import org.slf4j.LoggerFactory;
35+
36+
import java.lang.invoke.MethodHandles;
3337

3438
/**
3539
* Shows the ImageJ main window, with Mastodon installed.
@@ -38,8 +42,11 @@
3842
*/
3943
public class StartImageJ
4044
{
45+
private static final Logger logger = LoggerFactory.getLogger( MethodHandles.lookup().lookupClass() );
46+
4147
public static void main( String... args )
4248
{
49+
logger.info( "Starting ImageJ..." );
4350
Context context = new Context();
4451
UIService uiService = context.service( UIService.class );
4552
uiService.showUI();
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<configuration debug="false">
4+
5+
<property name="LOGS" value="./logs"/>
6+
7+
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
8+
<encoder>
9+
<pattern>%highlight(%-5level) %d{yyyy-MM-dd HH:mm:ss.SSS} [%blue(%t)] \(%file:%line\) - %m%n
10+
</pattern>
11+
</encoder>
12+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
13+
<level>INFO</level>
14+
</filter>
15+
</appender>
16+
<appender name="stderr" class="ch.qos.logback.core.ConsoleAppender">
17+
<encoder>
18+
<pattern>%highlight(%-5level) %d{yyyy-MM-dd HH:mm:ss.SSS} [%blue(%t)] \(%file:%line\) - %m%n
19+
</pattern>
20+
</encoder>
21+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
22+
<level>WARN</level>
23+
</filter>
24+
</appender>
25+
<appender name="file-trace" class="ch.qos.logback.core.rolling.RollingFileAppender">
26+
<File>${LOGS}/trace.log</File>
27+
<encoder>
28+
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [%c{1}:%M:%L] - %m%n</Pattern>
29+
</encoder>
30+
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
31+
<!-- rollover daily -->
32+
<fileNamePattern>${LOGS}/trace.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
33+
<!-- each file should be at most 10MB, keep 60 days worth of history, but at most 1GB-->
34+
<maxFileSize>20MB</maxFileSize>
35+
<maxHistory>60</maxHistory>
36+
<totalSizeCap>1GB</totalSizeCap>
37+
</rollingPolicy>
38+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
39+
<level>TRACE</level>
40+
</filter>
41+
</appender>
42+
<appender name="file-debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
43+
<File>${LOGS}/debug.log</File>
44+
<encoder>
45+
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [%c{1}:%M:%L] - %m%n</Pattern>
46+
</encoder>
47+
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
48+
<!-- rollover daily -->
49+
<fileNamePattern>${LOGS}/debug.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
50+
<!-- each file should be at most 10MB, keep 60 days worth of history, but at most 1GB-->
51+
<maxFileSize>20MB</maxFileSize>
52+
<maxHistory>60</maxHistory>
53+
<totalSizeCap>1GB</totalSizeCap>
54+
</rollingPolicy>
55+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
56+
<level>DEBUG</level>
57+
</filter>
58+
</appender>
59+
<appender name="file-info" class="ch.qos.logback.core.rolling.RollingFileAppender">
60+
<File>${LOGS}/info.log</File>
61+
<encoder>
62+
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [%c{1}:%M:%L] - %m%n</Pattern>
63+
</encoder>
64+
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
65+
<!-- rollover daily -->
66+
<fileNamePattern>${LOGS}/info.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
67+
<!-- each file should be at most 10MB, keep 60 days worth of history, but at most 1GB-->
68+
<maxFileSize>20MB</maxFileSize>
69+
<maxHistory>60</maxHistory>
70+
<totalSizeCap>1GB</totalSizeCap>
71+
</rollingPolicy>
72+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
73+
<level>INFO</level>
74+
</filter>
75+
</appender>
76+
<appender name="file-warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
77+
<File>${LOGS}/warn.log</File>
78+
<encoder>
79+
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [%c{1}:%M:%L] - %m%n</Pattern>
80+
</encoder>
81+
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
82+
<!-- rollover daily -->
83+
<fileNamePattern>${LOGS}/warn.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
84+
<!-- each file should be at most 10MB, keep 60 days worth of history, but at most 1GB-->
85+
<maxFileSize>20MB</maxFileSize>
86+
<maxHistory>60</maxHistory>
87+
<totalSizeCap>1GB</totalSizeCap>
88+
</rollingPolicy>
89+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
90+
<level>WARN</level>
91+
</filter>
92+
</appender>
93+
<appender name="file-error" class="ch.qos.logback.core.rolling.RollingFileAppender">
94+
<File>${LOGS}/error.log</File>
95+
<encoder>
96+
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [%c{1}:%M:%L] - %m%n</Pattern>
97+
</encoder>
98+
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
99+
<!-- rollover daily -->
100+
<fileNamePattern>${LOGS}/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
101+
<!-- each file should be at most 10MB, keep 60 days worth of history, but at most 1GB-->
102+
<maxFileSize>20MB</maxFileSize>
103+
<maxHistory>60</maxHistory>
104+
<totalSizeCap>1GB</totalSizeCap>
105+
</rollingPolicy>
106+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
107+
<level>ERROR</level>
108+
</filter>
109+
</appender>
110+
111+
<!-- Set root log level to DEBUG -->
112+
<root level="DEBUG">
113+
<appender-ref ref="stdout"/>
114+
<appender-ref ref="file-trace"/>
115+
<appender-ref ref="file-debug"/>
116+
<appender-ref ref="file-info"/>
117+
<appender-ref ref="file-warn"/>
118+
<appender-ref ref="file-error"/>
119+
</root>
120+
121+
<!-- Example how to change log level for certain packages -->
122+
<logger name="org.mastodon.mamut.util" level="DEBUG"/>
123+
124+
125+
</configuration>

0 commit comments

Comments
 (0)