Skip to content

Instantly share code, notes, and snippets.

@bbrother92
Last active April 15, 2021 09:38
Show Gist options
  • Select an option

  • Save bbrother92/22ff6b2028dc0fafb353133556e4e3d5 to your computer and use it in GitHub Desktop.

Select an option

Save bbrother92/22ff6b2028dc0fafb353133556e4e3d5 to your computer and use it in GitHub Desktop.
#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
slf4j

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment