Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 87 additions & 4 deletions rlib-logger-api/src/main/java/javasabr/rlib/logger/api/Logger.java
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,36 @@ interface N4Factory<A, B, C, D> {
@NonNull
String make(A arg1, B arg2, C arg3, D arg4);
}

/**
* Returns the name of this logger.
*
* @return the logger name
* @since 10.0.0
*/
@NonNull String name();

/**
* Prints a trace message.
*
* @param message the message to print
* @since 10.0.0
*/
default void trace(@NonNull String message) {
print(LoggerLevel.TRACE, message);
}

/**
* Prints a trace message with an exception.
*
* @param message the message to print
* @param exception the exception to print
* @since 10.0.0
*/
default void trace(@NonNull String message, @NonNull Throwable exception) {
print(LoggerLevel.TRACE, message, exception);
}

/**
* Prints a debug message.
*
Expand All @@ -209,6 +238,17 @@ default void debug(@NonNull String message) {
print(LoggerLevel.DEBUG, message);
}

/**
* Prints a debug message with an exception.
*
* @param message the message to print
* @param exception the exception to print
* @since 10.0.0
*/
default void debug(@NonNull String message, @NonNull Throwable exception) {
print(LoggerLevel.DEBUG, message, exception);
}
Comment on lines +248 to +250

default void debug(int arg1, @NonNull IntFactory factory) {
print(LoggerLevel.DEBUG, arg1, factory);
}
Expand Down Expand Up @@ -261,6 +301,21 @@ default <A> void debug(A arg1, int arg2, int arg3, @NonNull N1Int2Factory<A> fac
default void error(@NonNull String message) {
print(LoggerLevel.ERROR, message);
}

default void error(@NonNull Throwable exception) {
print(LoggerLevel.ERROR, exception);
}

/**
* Prints an error message with an exception.
*
* @param message the message to print
* @param exception the exception to print
* @since 10.0.0
*/
default void error(@NonNull String message, @NonNull Throwable exception) {
print(LoggerLevel.ERROR, message, exception);
}

default <A> void error(A arg1, @NonNull N1Factory<A> factory) {
print(LoggerLevel.ERROR, arg1, factory);
Expand Down Expand Up @@ -310,14 +365,21 @@ default <A, B, C, D> void error(A arg1, B arg2, C arg3, D arg4, @NonNull N4Facto
print(LoggerLevel.ERROR, arg1, arg2, arg3, arg4, factory);
}

default void error(@NonNull Throwable exception) {
print(LoggerLevel.ERROR, exception);
}

default void info(@NonNull String message) {
print(LoggerLevel.INFO, message);
}

/**
* Prints an info message with an exception.
*
* @param message the message to print
* @param exception the exception to print
* @since 10.0.0
*/
default void info(@NonNull String message, @NonNull Throwable exception) {
print(LoggerLevel.INFO, message, exception);
}

default void info(int arg1, @NonNull IntFactory factory) {
print(LoggerLevel.INFO, arg1, factory);
}
Expand Down Expand Up @@ -399,6 +461,17 @@ default void warn(@NonNull String message) {
print(LoggerLevel.WARNING, message);
}

/**
* Prints a warning message with an exception.
*
* @param message the message to print
* @param exception the exception to print
* @since 10.0.0
*/
default void warn(@NonNull String message, @NonNull Throwable exception) {
print(LoggerLevel.WARNING, message, exception);
}

@Deprecated(forRemoval = true)
default void warning(@NonNull String message) {
print(LoggerLevel.WARNING, message);
Expand Down Expand Up @@ -582,6 +655,16 @@ default <A, B, C, D> void warning(

void print(@NonNull LoggerLevel level, @NonNull Throwable exception);

/**
* Prints a message with an exception at the specified level.
*
* @param level the logger level
* @param message the message to print
* @param exception the exception to print
* @since 10.0.0
*/
void print(@NonNull LoggerLevel level, @NonNull String message, @NonNull Throwable exception);

default <A> void print(@NonNull LoggerLevel level, A arg1, @NonNull N1Factory<A> factory) {
if (enabled(level)) {
print(level, factory.make(arg1));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@
@Accessors(fluent = true)
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
public enum LoggerLevel {
INFO("INFO", " ", true, true),
TRACE("TRACE", " ", false, false),
DEBUG("DEBUG", " ", false, false),
INFO("INFO", " ", true, true),
WARNING("WARN", " ", true, true),
ERROR("ERROR", " ", true, true);
Comment on lines 18 to 23

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,18 @@
import javasabr.rlib.logger.api.LoggerLevel;

public final class NullLogger implements Logger {

@Override
public String name() {
return "null";
}

@Override
public void print(LoggerLevel level, String message) {}

@Override
public void print(LoggerLevel level, Throwable exception) {}

@Override
public void print(LoggerLevel level, String message, Throwable exception) {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,49 @@

public class LoggerTest {

@Test
@DisplayName("should print trace message and trace message with exception")
void shouldPrintTraceMethods() {
// given:
var messages = new ArrayList<String>();
var exception = new RuntimeException("trace-error");

Logger logger = new Logger() {

@Override
public String name() {
return "test";
}

@Override
public boolean enabled(@NonNull LoggerLevel level) {
return true;
}

@Override
public void print(@NonNull LoggerLevel level, @NonNull String message) {
messages.add(level + "_" + message);
}

@Override
public void print(@NonNull LoggerLevel level, @NonNull Throwable exception) {
}

@Override
public void print(@NonNull LoggerLevel level, @NonNull String message, @NonNull Throwable exception) {
messages.add(level + "_" + message + "_" + exception.getMessage());
}
};

// when:
logger.trace("msg1");
logger.trace("msg2", exception);

// then:
assertThat(messages)
.isEqualTo(List.of("TRACE_msg1", "TRACE_msg2_trace-error"));
}

@Test
@DisplayName("should print all debug methods")
void shouldPrintAllDebugMethods() {
Expand All @@ -31,6 +74,11 @@ void shouldPrintAllDebugMethods() {

Logger logger = new Logger() {

@Override
public String name() {
return "test";
}

@Override
public boolean enabled(@NonNull LoggerLevel level) {
return true;
Expand All @@ -44,6 +92,10 @@ public void print(@NonNull LoggerLevel level, @NonNull String message) {
@Override
public void print(@NonNull LoggerLevel level, @NonNull Throwable exception) {
}

@Override
public void print(@NonNull LoggerLevel level, @NonNull String message, @NonNull Throwable exception) {
}
};

// when:
Expand Down Expand Up @@ -85,6 +137,11 @@ void shouldPrintAllInfoMethods() {

Logger logger = new Logger() {

@Override
public String name() {
return "test";
}

@Override
public boolean enabled(@NonNull LoggerLevel level) {
return true;
Expand All @@ -98,6 +155,10 @@ public void print(@NonNull LoggerLevel level, @NonNull String message) {
@Override
public void print(@NonNull LoggerLevel level, @NonNull Throwable exception) {
}

@Override
public void print(@NonNull LoggerLevel level, @NonNull String message, @NonNull Throwable exception) {
}
};

// when:
Expand Down Expand Up @@ -139,6 +200,11 @@ void shouldPrintAllWarningMethods() {

Logger logger = new Logger() {

@Override
public String name() {
return "test";
}

@Override
public boolean enabled(@NonNull LoggerLevel level) {
return true;
Expand All @@ -152,6 +218,10 @@ public void print(@NonNull LoggerLevel level, @NonNull String message) {
@Override
public void print(@NonNull LoggerLevel level, @NonNull Throwable exception) {
}

@Override
public void print(@NonNull LoggerLevel level, @NonNull String message, @NonNull Throwable exception) {
}
};

// when:
Expand Down Expand Up @@ -193,6 +263,11 @@ void shouldPrintAllErrorMethods() {

Logger logger = new Logger() {

@Override
public String name() {
return "test";
}

@Override
public boolean enabled(@NonNull LoggerLevel level) {
return true;
Expand All @@ -206,6 +281,10 @@ public void print(@NonNull LoggerLevel level, @NonNull String message) {
@Override
public void print(@NonNull LoggerLevel level, @NonNull Throwable exception) {
}

@Override
public void print(@NonNull LoggerLevel level, @NonNull String message, @NonNull Throwable exception) {
}
};

// when:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@
*/
@FieldDefaults(level = AccessLevel.PROTECTED, makeFinal = true)
public final class DefaultLogger implements Logger {

private static final LoggerLevel[] VALUES = LoggerLevel.values();


int[] override;
String name;
LoggerService loggerService;
Expand All @@ -27,6 +25,11 @@ public DefaultLogger(String name, LoggerService loggerService) {
Arrays.fill(override, LoggerService.NOT_CONFIGURE);
}

@Override
public String name() {
return name;
}

@Override
public boolean enabled(LoggerLevel level) {
int value = override[level.ordinal()];
Expand Down Expand Up @@ -63,4 +66,12 @@ public void print(LoggerLevel level, Throwable exception) {
loggerService.write(level, name, StringUtils.toString(exception));
}
}

@Override
public void print(LoggerLevel level, String message, Throwable exception) {
if (enabled(level)) {
String exceptionInfo = StringUtils.toString(exception);
loggerService.write(level, name, message + ": " + exceptionInfo);
}
}
}
11 changes: 11 additions & 0 deletions rlib-logger-slf4j-impl/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
plugins {
id("configure-java")
id("configure-publishing")
}

dependencies {
api projects.rlibLoggerApi
api libs.slf4j.api

testImplementation projects.rlibLoggerImpl
}
Loading
Loading