Skip to content

Commit

Permalink
Merge pull request #19 from mastodon-sc/add-logback
Browse files Browse the repository at this point in the history
Add slf4j as logging framework (with logback as test-runtime dependency)
  • Loading branch information
stefanhahmann authored Apr 20, 2023
2 parents 54783c3 + f9dbdd1 commit 961b191
Show file tree
Hide file tree
Showing 6 changed files with 181 additions and 3 deletions.
25 changes: 25 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# This workflow will build a Java project with Maven

name: Java CI with Maven

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up Java
uses: actions/setup-java@v2
with:
java-version: '8'
distribution: 'zulu'
cache: 'maven'
- name: Build with Maven
run: mvn -B package --file pom.xml
4 changes: 2 additions & 2 deletions .github/workflows/sonarcloud.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ jobs:

steps:
- uses: actions/checkout@v2
- name: Set up Java
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '8'
java-version: '11'
distribution: 'zulu'
cache: 'maven'

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
/logs/
22 changes: 21 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,26 @@
<artifactId>mastodon</artifactId>
<version>${mastodon.version}</version>
</dependency>

<!-- include simple logging facade for logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>

<!-- include logback-classic at test runtime -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<scope>test</scope>
</dependency>
<!-- include logback-core at test runtime -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>sc.fiji</groupId>
<artifactId>spim_data</artifactId>
Expand Down Expand Up @@ -126,7 +146,7 @@
<url>https://maven.scijava.org/content/groups/public</url>
</repository>
</repositories>

<profiles>
<profile>
<id>coverage</id>
Expand Down
7 changes: 7 additions & 0 deletions src/test/java/org/mastodon/mamut/deeplineage/StartImageJ.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@

import org.scijava.Context;
import org.scijava.ui.UIService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.lang.invoke.MethodHandles;

/**
* Shows the ImageJ main window, with Mastodon installed.
Expand All @@ -38,8 +42,11 @@
*/
public class StartImageJ
{
private static final Logger logger = LoggerFactory.getLogger( MethodHandles.lookup().lookupClass() );

public static void main( String... args )
{
logger.info( "Starting ImageJ..." );
Context context = new Context();
UIService uiService = context.service( UIService.class );
uiService.showUI();
Expand Down
125 changes: 125 additions & 0 deletions src/test/resources/logback-test.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="false">

<property name="LOGS" value="./logs"/>

<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%highlight(%-5level) %d{yyyy-MM-dd HH:mm:ss.SSS} [%blue(%t)] \(%file:%line\) - %m%n
</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<appender name="stderr" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%highlight(%-5level) %d{yyyy-MM-dd HH:mm:ss.SSS} [%blue(%t)] \(%file:%line\) - %m%n
</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<appender name="file-trace" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOGS}/trace.log</File>
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [%c{1}:%M:%L] - %m%n</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOGS}/trace.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<!-- each file should be at most 10MB, keep 60 days worth of history, but at most 1GB-->
<maxFileSize>20MB</maxFileSize>
<maxHistory>60</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>TRACE</level>
</filter>
</appender>
<appender name="file-debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOGS}/debug.log</File>
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [%c{1}:%M:%L] - %m%n</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOGS}/debug.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<!-- each file should be at most 10MB, keep 60 days worth of history, but at most 1GB-->
<maxFileSize>20MB</maxFileSize>
<maxHistory>60</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
<appender name="file-info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOGS}/info.log</File>
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [%c{1}:%M:%L] - %m%n</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOGS}/info.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<!-- each file should be at most 10MB, keep 60 days worth of history, but at most 1GB-->
<maxFileSize>20MB</maxFileSize>
<maxHistory>60</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<appender name="file-warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOGS}/warn.log</File>
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [%c{1}:%M:%L] - %m%n</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOGS}/warn.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<!-- each file should be at most 10MB, keep 60 days worth of history, but at most 1GB-->
<maxFileSize>20MB</maxFileSize>
<maxHistory>60</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<appender name="file-error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOGS}/error.log</File>
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [%c{1}:%M:%L] - %m%n</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOGS}/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<!-- each file should be at most 10MB, keep 60 days worth of history, but at most 1GB-->
<maxFileSize>20MB</maxFileSize>
<maxHistory>60</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>

<!-- Set root log level to DEBUG -->
<root level="DEBUG">
<appender-ref ref="stdout"/>
<appender-ref ref="file-trace"/>
<appender-ref ref="file-debug"/>
<appender-ref ref="file-info"/>
<appender-ref ref="file-warn"/>
<appender-ref ref="file-error"/>
</root>

<!-- Example how to change log level for certain packages -->
<logger name="org.mastodon.mamut.util" level="DEBUG"/>


</configuration>

0 comments on commit 961b191

Please sign in to comment.