bbrother92
12/3/2017 - 12:24 AM

#slf4j #cheatsheet

#slf4j #cheatsheet

log4j12

Format modifiers

layout

XML

log4j xml config
migration from Log4j 1.x to 2.x

<log4j:configuration debug="false"> "true" will print out information as the configuration file is read and used to configure the log4j environment.
Example:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p [%t] %c{1}(%F:%L) - %m%n"/>
        </layout>
    </appender>
    <appender name="file_root" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="false"/>
        <param name="file" value="src/test/resources/log4J_root.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="ROOT %-5p %c{1}(%F:%L) - %m%n"/>
        </layout>
    </appender>
    <appender name="file" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="false"/>
        <!--<param name="threshold" value="error"/>-->
        <!--<filter  class=""/>-->
        <param name="maxFileSize" value="10KB"/>
        <param name="maxBackupIndex" value="5"/>
        <param name="file" value="src/test/resources/log4J.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{2}(%F:%L) - %m%n"/>
        </layout>
    </appender>

    <logger name="Main" additivity="true">
        <level value="debug"/>
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </logger>
    <root>
        <level value="trace"/>
        <appender-ref ref="file_root"/>
    </root>
</log4j:configuration>

or Property file:

# Root logger option
log4j.rootLogger=INFO,CONSOLE,FILE

# Direct log messages to CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
#log4j.appender.CONSOLE.Threshold=FATAL

# Rolling File Appender
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
# Path and file name to store the log file
#--------Log file Location---------------
log4j.appender.FILE.File=src/test/resources/log4J.log
# Set the append to false, overwrite
log4j.appender.FILE.Append=false
# Layout for Rolling File Appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Loggers

Descendant loggers inherits their level value from their nearest parent if that logger doesn't specifies the lvl

<logger name="com.eatmutton.muttonsite.torque" additivity="false">
   <level value="info" />
   <appender-ref ref="local-torque" />
</logger>

Appenders

The output of a log statement of logger C will go to all the appenders in C and its ancestors. However, if an ancestor of logger C, say B, has the additivity flag set to false, then C's output will be directed to all the appenders in C and its ancestors upto and including B but not the appenders in any of the ancestors of B. Threshould set lvl that filters logs higher or equal to given value.

Logger logger = LoggerFactory.getLogger("parent.child.Child"); //or Child.class 

slf4j example

Logger logger = LoggerFactory.getLogger(Main.class);
//Logger logger = LoggerFactory.getLogger("Main"); 
Logger root = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);

logger.trace("TRACE message");
logger.debug("DEBUG");
logger.info("INFO message");
logger.warn("WARN message");
logger.error("ERROR message");

Notes

if root lvl set to trace then logger.isDebugEnabled() gives true.
manual