Skip to content

Commit fae036f

Browse files
authored
Implement base element and API for customizing RLib Logger (#72)
1 parent 7e47dfd commit fae036f

29 files changed

Lines changed: 1073 additions & 481 deletions

File tree

rlib-logger-api/src/main/java/javasabr/rlib/logger/api/Logger.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,18 @@ interface N4Factory<A, B, C, D> {
205205
* @return the logger name
206206
* @since 10.0.0
207207
*/
208-
@NonNull String name();
208+
@NonNull
209+
String name();
209210

211+
/**
212+
* Returns the short name of this logger.
213+
*
214+
* @return the short logger name
215+
* @since 10.0.0
216+
*/
217+
@NonNull
218+
String shortName();
219+
210220
/**
211221
* Prints a trace message.
212222
*
Lines changed: 8 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package javasabr.rlib.logger.api;
22

3-
import java.io.Writer;
4-
53
/**
64
* Factory for creating {@link Logger} instances.
75
*
@@ -10,22 +8,22 @@
108
public interface LoggerFactory {
119

1210
/**
13-
* Creates a logger with the specified name.
11+
* Creates or gets a logger with the specified name.
1412
*
1513
* @param name the logger name
1614
* @return the logger instance
1715
* @since 10.0.0
1816
*/
19-
Logger make(String name);
17+
Logger getLogger(String name);
2018

2119
/**
22-
* Creates a logger for the specified class.
20+
* Creates or gets a logger for the specified class.
2321
*
2422
* @param type the class to create a logger for
2523
* @return the logger instance
2624
* @since 10.0.0
2725
*/
28-
Logger make(Class<?> type);
26+
Logger getLogger(Class<?> type);
2927

3028
/**
3129
* Returns the default logger.
@@ -34,36 +32,12 @@ public interface LoggerFactory {
3432
* @since 10.0.0
3533
*/
3634
Logger getDefault();
37-
38-
/**
39-
* Adds a listener to receive log output.
40-
*
41-
* @param listener the listener to add
42-
* @since 10.0.0
43-
*/
44-
void addListener(LoggerListener listener);
45-
46-
/**
47-
* Removes a previously added listener.
48-
*
49-
* @param listener the listener to remove
50-
* @since 10.0.0
51-
*/
52-
void removeListener(LoggerListener listener);
53-
54-
/**
55-
* Adds a writer to receive log output.
56-
*
57-
* @param writer the writer to add
58-
* @since 10.0.0
59-
*/
60-
void addWriter(Writer writer);
61-
35+
6236
/**
63-
* Removes a previously added writer.
37+
* Returns the logger service.
6438
*
65-
* @param writer the writer to remove
39+
* @return the logger service
6640
* @since 10.0.0
6741
*/
68-
void removeWriter(Writer writer);
42+
LoggerService getLoggerService();
6943
}

rlib-logger-api/src/main/java/javasabr/rlib/logger/api/LoggerLevel.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
@Accessors(fluent = true)
1717
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
1818
public enum LoggerLevel {
19-
TRACE("TRACE", " ", false, false),
20-
DEBUG("DEBUG", " ", false, false),
21-
INFO("INFO", " ", true, true),
22-
WARNING("WARN", " ", true, true),
23-
ERROR("ERROR", " ", true, true);
19+
TRACE("TRACE", " ", 0, false, false),
20+
DEBUG("DEBUG", " ", 1, false, false),
21+
INFO("INFO", " ", 2, true, true),
22+
WARNING("WARN", " ", 3, true, true),
23+
ERROR("ERROR", " ", 4, true, true);
2424

2525
/**
2626
* The number of log levels.
@@ -30,6 +30,7 @@ public enum LoggerLevel {
3030
String title;
3131
String offset;
3232

33+
int severity;
3334
boolean enabled;
3435
boolean forceFlush;
3536

Lines changed: 22 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package javasabr.rlib.logger.api;
22

3-
import java.io.Writer;
43
import java.lang.reflect.InvocationTargetException;
54
import java.util.Iterator;
65
import java.util.ServiceLoader;
7-
import javasabr.rlib.logger.api.impl.NullLoggerFactory;
6+
import javasabr.rlib.logger.api.impl.NoOpsLoggerFactory;
87

98
/**
109
* Central manager for obtaining and configuring loggers.
@@ -39,9 +38,9 @@ public class LoggerManager {
3938

4039
if (implementation == null) {
4140
System.err.printf(
42-
"ERROR: No any exist implementation of [%s], will be used null logger%n",
41+
"ERROR: No any exist implementation of [%s], will be used no ops logger%n",
4342
LoggerFactory.class);
44-
LOGGER_FACTORY = new NullLoggerFactory();
43+
LOGGER_FACTORY = new NoOpsLoggerFactory();
4544
} else {
4645
try {
4746
LOGGER_FACTORY = implementation
@@ -71,7 +70,7 @@ public static Logger getDefaultLogger() {
7170
* @since 10.0.0
7271
*/
7372
public static Logger getLogger(Class<?> cs) {
74-
return LOGGER_FACTORY.make(cs);
73+
return LOGGER_FACTORY.getLogger(cs);
7574
}
7675

7776
/**
@@ -82,57 +81,19 @@ public static Logger getLogger(Class<?> cs) {
8281
* @since 10.0.0
8382
*/
8483
public static Logger getLogger(String id) {
85-
return LOGGER_FACTORY.make(id);
84+
return LOGGER_FACTORY.getLogger(id);
8685
}
8786

8887
/**
89-
* Adds a listener to receive log output.
88+
* Returns the logger service.
9089
*
91-
* @param listener the listener to add
90+
* @return the logger service
9291
* @since 10.0.0
9392
*/
94-
public static void addListener(LoggerListener listener) {
95-
if (LOGGER_FACTORY instanceof LoggerService ls) {
96-
ls.addListener(listener);
97-
}
98-
}
99-
100-
/**
101-
* Removes a previously added listener.
102-
*
103-
* @param listener the listener to remove
104-
* @since 10.0.0
105-
*/
106-
public static void removeListener(LoggerListener listener) {
107-
if (LOGGER_FACTORY instanceof LoggerService ls) {
108-
ls.removeListener(listener);
109-
}
93+
public static LoggerService getLoggerService() {
94+
return LOGGER_FACTORY.getLoggerService();
11095
}
111-
112-
/**
113-
* Adds a writer to receive log output.
114-
*
115-
* @param writer the writer to add
116-
* @since 10.0.0
117-
*/
118-
public static void addWriter(Writer writer) {
119-
if (LOGGER_FACTORY instanceof LoggerService ls) {
120-
ls.addWriter(writer);
121-
}
122-
}
123-
124-
/**
125-
* Removes a previously added writer.
126-
*
127-
* @param writer the writer to remove
128-
* @since 10.0.0
129-
*/
130-
public static void removeWriter(Writer writer) {
131-
if (LOGGER_FACTORY instanceof LoggerService ls) {
132-
ls.removeWriter(writer);
133-
}
134-
}
135-
96+
13697
/**
13798
* Configures the default setting for a log level.
13899
*
@@ -141,9 +102,9 @@ public static void removeWriter(Writer writer) {
141102
* @since 10.0.0
142103
*/
143104
public static void configureDefault(LoggerLevel level, boolean def) {
144-
if (LOGGER_FACTORY instanceof LoggerService ls) {
145-
ls.configureDefault(level, def);
146-
}
105+
LOGGER_FACTORY
106+
.getLoggerService()
107+
.configureDefault(level, def);
147108
}
148109

149110
/**
@@ -153,9 +114,9 @@ public static void configureDefault(LoggerLevel level, boolean def) {
153114
* @since 10.0.0
154115
*/
155116
public static void removeDefault(LoggerLevel level) {
156-
if (LOGGER_FACTORY instanceof LoggerService ls) {
157-
ls.removeDefault(level);
158-
}
117+
LOGGER_FACTORY
118+
.getLoggerService()
119+
.removeDefault(level);
159120
}
160121

161122
/**
@@ -166,9 +127,9 @@ public static void removeDefault(LoggerLevel level) {
166127
* @since 10.0.0
167128
*/
168129
public static void enable(Class<?> cs, LoggerLevel level) {
169-
if (LOGGER_FACTORY instanceof LoggerService ls) {
170-
ls.enable(cs, level);
171-
}
130+
LOGGER_FACTORY
131+
.getLoggerService()
132+
.enable(cs, level);
172133
}
173134

174135
/**
@@ -179,8 +140,8 @@ public static void enable(Class<?> cs, LoggerLevel level) {
179140
* @since 10.0.0
180141
*/
181142
public static void disable(Class<?> cs, LoggerLevel level) {
182-
if (LOGGER_FACTORY instanceof LoggerService ls) {
183-
ls.disable(cs, level);
184-
}
143+
LOGGER_FACTORY
144+
.getLoggerService()
145+
.disable(cs, level);
185146
}
186147
}

rlib-logger-api/src/main/java/javasabr/rlib/logger/api/LoggerService.java

Lines changed: 4 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package javasabr.rlib.logger.api;
22

3-
import java.io.Writer;
4-
53
/**
64
* Service interface for configuring logger behavior.
75
*
@@ -23,39 +21,7 @@ public interface LoggerService {
2321
* Indicates that the level is enabled.
2422
*/
2523
int ENABLED = 1;
26-
27-
/**
28-
* Adds a listener to receive log output.
29-
*
30-
* @param listener the listener to add
31-
* @since 10.0.0
32-
*/
33-
void addListener(LoggerListener listener);
34-
35-
/**
36-
* Removes a previously added listener.
37-
*
38-
* @param listener the listener to remove
39-
* @since 10.0.0
40-
*/
41-
void removeListener(LoggerListener listener);
42-
43-
/**
44-
* Adds a writer to receive log output.
45-
*
46-
* @param writer the writer to add
47-
* @since 10.0.0
48-
*/
49-
void addWriter(Writer writer);
50-
51-
/**
52-
* Removes a previously added writer.
53-
*
54-
* @param writer the writer to remove
55-
* @since 10.0.0
56-
*/
57-
void removeWriter(Writer writer);
58-
24+
5925
/**
6026
* Enables logging at the specified level for the class.
6127
*
@@ -103,10 +69,10 @@ public interface LoggerService {
10369
/**
10470
* Writes a log message.
10571
*
72+
* @param logger the logger
10673
* @param level the log level
107-
* @param loggerName the logger name
108-
* @param logMessage the message to write
74+
* @param message the message to write
10975
* @since 10.0.0
11076
*/
111-
void write(LoggerLevel level, String loggerName, String logMessage);
77+
void write(Logger logger, LoggerLevel level, String message);
11278
}

rlib-logger-api/src/main/java/javasabr/rlib/logger/api/impl/NullLogger.java renamed to rlib-logger-api/src/main/java/javasabr/rlib/logger/api/impl/NoOpsLogger.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,16 @@
33
import javasabr.rlib.logger.api.Logger;
44
import javasabr.rlib.logger.api.LoggerLevel;
55

6-
public final class NullLogger implements Logger {
6+
public final class NoOpsLogger implements Logger {
77

88
@Override
99
public String name() {
10-
return "null";
10+
return "noops";
11+
}
12+
13+
@Override
14+
public String shortName() {
15+
return "noops";
1116
}
1217

1318
@Override
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package javasabr.rlib.logger.api.impl;
2+
3+
import javasabr.rlib.logger.api.Logger;
4+
import javasabr.rlib.logger.api.LoggerFactory;
5+
import javasabr.rlib.logger.api.LoggerService;
6+
7+
public class NoOpsLoggerFactory implements LoggerFactory {
8+
9+
private static final NoOpsLogger NO_OPS_LOGGER = new NoOpsLogger();
10+
private static final LoggerService NO_OPS_LOGGER_SERVICE = new NoOpsLoggerService();
11+
12+
@Override
13+
public Logger getLogger(String name) {
14+
return NO_OPS_LOGGER;
15+
}
16+
17+
@Override
18+
public Logger getLogger(Class<?> type) {
19+
return NO_OPS_LOGGER;
20+
}
21+
22+
@Override
23+
public Logger getDefault() {
24+
return NO_OPS_LOGGER;
25+
}
26+
27+
@Override
28+
public LoggerService getLoggerService() {
29+
return NO_OPS_LOGGER_SERVICE;
30+
}
31+
}

0 commit comments

Comments
 (0)