Logger can be assigned levels. Following levels are supported by most of the logging libraries.
a. TRACE
b. DEBUG
c. INFO
d. WARN and
e. ERROR
'ch.qos.logback.classic.Level' defined the logging levels for a logback logger. Logback root logger is assigned with DEBUG logging level by default.
What if I do not set the logging level of a logger?
It inherits the logging level from its closest ancestor. For example, if you do not set logging level to the logger L1, it inherit the first non-null logging level in its naming hierarchy.
Below tables summarize different examples on logging levels.
Example 1: Logging is not set for individual loggers
LoggerName |
Assigned Level |
Effective Level |
root |
ERROR |
ERROR |
A |
None |
ERROR |
A.B |
None |
ERROR |
A.B.C |
None |
ERROR |
Example 2: All loggers set logging level explicitly
LoggerName |
Assigned Level |
Effective Level |
root |
ERROR |
ERROR |
A |
INFO |
INFO |
A.B |
DEBUG |
DEBUG |
A.B.C |
WARN |
WARN |
Example 3: Loggers root, A and A.B.C are assigned the levels DEBUG, INFO and ERROR respectively. Logger A.B inherits its level value from its parent A.
LoggerName |
Assigned Level |
Effective Level |
root |
ERROR |
ERROR |
A |
INFO |
INFO |
A.B |
None |
INFO |
A.B.C |
ERROR |
ERROR |
Example 4: Loggers root and A and are assigned the levels DEBUG and WARN respectively. The loggers A.B and A.B.c inherit their level from their nearest parent A.
LoggerName |
Assigned Level |
Effective Level |
root |
ERROR |
ERROR |
A |
WARN |
WARN |
A.B |
None |
WARN |
A.B.C |
None |
WARN |
How the information printed based on logging levels?
A logging statement is enabled, if its level is higher than or equal to the effective level of its logger. Logging level orders are like TRACE < DEBUG < INFO < WARN < ERROR.
For example, if a logger’s effective level is set to INFO, then info, warning and error level messages are enabled.
For example,
LoggingSelectionRuleDemo.java
package com.sample.app;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
public class LoggingSelectionRuleDemo {
public static void main(String[] args) {
ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger) LoggerFactory
.getLogger(LoggingLevelsDemo.class);
logger.setLevel(Level.INFO);
logger.trace("Trace message");
logger.debug("Debug message");
logger.info("Info message");
logger.warn("Warning message");
logger.error("Error message");
}
}
Output
12:19:40.905 [main] INFO com.sample.app.LoggingLevelsDemo - Info message 12:19:40.907 [main] WARN com.sample.app.LoggingLevelsDemo - Warning message 12:19:40.907 [main] ERROR com.sample.app.LoggingLevelsDemo - Error message
Previous Next Home
No comments:
Post a Comment