Skip to content

Commit

Permalink
Merge pull request #6 from SebastianKuehn/slf4jv2
Browse files Browse the repository at this point in the history
  • Loading branch information
netmikey committed Jun 1, 2023
2 parents 9f1ba5a + 73b4097 commit 505d7fa
Show file tree
Hide file tree
Showing 8 changed files with 130 additions and 12 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ bin/
.recommenders/
.classpath
.project
.idea/
8 changes: 4 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ subprojects {
java.toolchain.languageVersion = JavaLanguageVersion.of(8)

ext {
junitVersion = '5.8.2' // https://search.maven.org/artifact/org.junit.jupiter/junit-jupiter-api
logbackVersion = '1.2.10' // https://search.maven.org/artifact/ch.qos.logback/logback-core
log4j2Version = '2.17.1' // https://search.maven.org/artifact/org.apache.logging.log4j/log4j-core
slf4jVersion = '1.7.32' // https://search.maven.org/artifact/org.slf4j/slf4j-api
junitVersion = '5.9.3' // https://search.maven.org/artifact/org.junit.jupiter/junit-jupiter-api
logbackVersion = '1.3.7' // https://search.maven.org/artifact/ch.qos.logback/logback-core
log4j2Version = '2.20.0' // https://search.maven.org/artifact/org.apache.logging.log4j/log4j-core
slf4jVersion = '2.0.7' // https://search.maven.org/artifact/org.slf4j/slf4j-api
}

repositories {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package io.github.netmikey.logunit.jul;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
Expand All @@ -11,6 +9,7 @@

import org.junit.jupiter.api.extension.ExtensionContext;
import org.slf4j.Marker;
import org.slf4j.event.KeyValuePair;
import org.slf4j.event.LoggingEvent;

import io.github.netmikey.logunit.api.LogCapturer;
Expand Down Expand Up @@ -114,10 +113,29 @@ public String getMessage() {
}

@Override
public List<Object> getArguments() {
Object[] parameters = record.getParameters();
if (null == parameters) {
return Collections.emptyList();
}
return Arrays.asList(parameters);
}

@Override
public List<KeyValuePair> getKeyValuePairs() {
return Collections.emptyList();
}

// for compatibility with older apis
public Marker getMarker() {
return null;
}

@Override
public List<Marker> getMarkers() {
return Collections.emptyList();
}

@Override
public String getLoggerName() {
return record.getLoggerName();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package io.github.netmikey.logunit.jul;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;

import org.junit.jupiter.api.Assertions;
Expand All @@ -10,6 +13,7 @@
import org.slf4j.event.Level;

import io.github.netmikey.logunit.api.LogCapturer;
import org.slf4j.event.LoggingEvent;

/**
* Unit test that uses JUL, applies {@link LogCapturer}s and validates their
Expand Down Expand Up @@ -79,6 +83,37 @@ public void test2CapturerReset() {
Assertions.assertEquals(0, namedLoggerWarnCapturer.size());
}

@Test
void test3EventMethodsWithoutParameters() {
namedLogger.warning(() -> "Test-Message");

List<LoggingEvent> events = namedLoggerWarnCapturer.getEvents();
Assertions.assertEquals(events.size(), 1);

LoggingEvent event = events.get(0);
Assertions.assertEquals("Test-Message", event.getMessage());
Assertions.assertEquals(Level.WARN, event.getLevel());
Assertions.assertSame(Collections.emptyList(), event.getArguments());
Assertions.assertSame(Collections.emptyList(), event.getKeyValuePairs());
Assertions.assertSame(Collections.emptyList(), event.getMarkers());
}

@Test
void test4EventMethodsWithParameters() {
namedLogger.log(java.util.logging.Level.SEVERE, "{0}-Message {1}", new Object[]{"Test", 42});

List<LoggingEvent> events = namedLoggerWarnCapturer.getEvents();
Assertions.assertEquals(events.size(), 1);

LoggingEvent event = events.get(0);
Assertions.assertEquals("{0}-Message {1}", event.getMessage(),
"returns the raw message (*not* formatted)");
Assertions.assertEquals(Level.ERROR, event.getLevel());
Assertions.assertEquals(Arrays.asList("Test", 42), event.getArguments());
Assertions.assertSame(Collections.emptyList(), event.getKeyValuePairs());
Assertions.assertSame(Collections.emptyList(), event.getMarkers());
}

private void logEverythingOnce(Logger logger) {
logger.finest("Some finest message");
logger.finer("Some finer message");
Expand Down
2 changes: 1 addition & 1 deletion logunit-log4j2/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ dependencies {
implementation("org.apache.logging.log4j:log4j-core:${log4j2Version}")

testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
testRuntimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:${log4j2Version}")
testRuntimeOnly("org.apache.logging.log4j:log4j-slf4j2-impl:${log4j2Version}")
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,13 @@ private void createLoggerAndAddAppender(String loggerName, Level level) {
Configuration cfg = ctx.getConfiguration();
AppenderRef ref = AppenderRef.createAppenderRef(listAppender.getName(), null, null);
AppenderRef[] refs = new AppenderRef[] { ref };
LoggerConfig loggerConfig = LoggerConfig.createLogger(true, level, loggerName, "true", refs, null, cfg, null);
LoggerConfig loggerConfig = LoggerConfig.newBuilder()
.withAdditivity(true)
.withLevel(level)
.withLoggerName(loggerName)
.withIncludeLocation("true")
.withRefs(refs).withConfig(cfg)
.build();
loggerConfig.addAppender(listAppender, level, null);
cfg.addLogger(loggerConfig.getName(), loggerConfig);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.github.netmikey.logunit.logback;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand All @@ -9,6 +10,7 @@
import org.junit.jupiter.api.extension.ExtensionContext;
import org.slf4j.LoggerFactory;
import org.slf4j.Marker;
import org.slf4j.event.KeyValuePair;
import org.slf4j.event.LoggingEvent;

import ch.qos.logback.classic.Level;
Expand All @@ -24,7 +26,7 @@
*/
public class LogbackLogProvider extends BaseLogProvider {

private final ConcurrentListAppender<ILoggingEvent> listAppender = new ConcurrentListAppender<ILoggingEvent>();
private final ConcurrentListAppender<ILoggingEvent> listAppender = new ConcurrentListAppender<>();

private final Map<String, Level> originalLevels = new HashMap<>();

Expand Down Expand Up @@ -127,8 +129,25 @@ public String getMessage() {
}

@Override
public List<Object> getArguments() {
return Arrays.asList(iEvent.getArgumentArray());
}

@Override
public List<KeyValuePair> getKeyValuePairs() {
return iEvent.getKeyValuePairs();
}

// for compatibility with older apis
public Marker getMarker() {
return iEvent.getMarker();
@SuppressWarnings("deprecation")
Marker marker = iEvent.getMarker();
return marker;
}

@Override
public List<Marker> getMarkers() {
return iEvent.getMarkerList();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,16 @@
import org.junit.jupiter.api.extension.RegisterExtension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;
import org.slf4j.event.KeyValuePair;
import org.slf4j.event.Level;

import io.github.netmikey.logunit.api.LogCapturer;
import org.slf4j.event.LoggingEvent;

import java.util.Arrays;
import java.util.List;

/**
* Unit test that uses Logback, applies {@link LogCapturer}s and validates their
Expand Down Expand Up @@ -37,7 +44,7 @@ public class LogCapturerWithLogbackTest {
* above when no level is specified</li>
* <li>that the namedLogger (by logger name) captures only the WARN level
* and above as specified</li>
* <li>both loggers and their capturers don't affeact each other</li>
* <li>both loggers and their capturers don't affect each other</li>
* </ul>
*/
@Test
Expand Down Expand Up @@ -84,6 +91,38 @@ public void test3CustomPredicates() {
"contain 'Some * message'");
}

/**
* Test that the values of the new fluent interface can be accessed
*/
@Test
void test4FluentApi() {
Marker marker1 = MarkerFactory.getMarker("Marker 1");
Marker marker2 = MarkerFactory.getMarker("Marker 2");
testLogger
.atError()
.setMessage(() -> "{}-Message {}")
.addArgument("Test")
.addArgument(42)
.addKeyValue("key1", "value1")
.addKeyValue("key2", "value2")
.addMarker(marker1)
.addMarker(marker2)
.log();

List<LoggingEvent> events = testLoggerInfoCapturer.getEvents();
Assertions.assertEquals(events.size(), 1);

LoggingEvent event = events.get(0);
Assertions.assertEquals("Test-Message 42", event.getMessage());
Assertions.assertEquals(Arrays.asList("Test", 42), event.getArguments());
Assertions.assertEquals(Arrays.asList(marker1, marker2), event.getMarkers());

List<KeyValuePair> pairs = event.getKeyValuePairs();
Assertions.assertEquals(2, pairs.size());
Assertions.assertEquals("key1=\"value1\"", pairs.get(0).toString());
Assertions.assertEquals("key2=\"value2\"", pairs.get(1).toString());
}

private void logEverythingOnce(Logger logger) {
logger.trace("Some trace message");
logger.debug("Some debug message");
Expand Down

0 comments on commit 505d7fa

Please sign in to comment.