Jars
'org.apache.logging.log4j:log4j-api:2.13.3' 'org.apache.logging.log4j:log4j-core:2.13.3'
Sample Code :
package com.log4j2demo;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Demo {
private static final Logger LOGGER = LogManager.getLogger(Demo.class);
public static void main(String[] args) {
System.out.println("Hello");
LOGGER.debug("This is a debug statement");
LOGGER.info("This is Info Log");
LOGGER.error("This is Error Log", new NullPointerException());
LOGGER.fatal("This is Fatal Log");
LOGGER.trace("This is trace Log");
}
}
Log4j2.properties (on class path)
status = error
#The level of internal Log4j events that should be logged to the console.
#"trace", "debug", "info", "warn", "error" and "fatal"
name = PropertiesConfig
#The name of the configuration.
property.filename = /home/tyson/Desktop/MoveScript/debug.log
#Make sure to change log file path as per your need
filters = threshold
filter.threshold.type = ThresholdFilter
filter.threshold.level = debug
#https://logging.apache.org/log4j/log4j-2.3/manual/filters.html (Accept/Deny/Threshold)
#Literally Filtering Logs
#appenders = rolling
appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = ${filename}
appender.rolling.append = true
# ${filename} will be replaced by property.filename values
appender.rolling.filePattern = /home/tyson/Desktop/MoveScript/debug-backup-%d{yyyy-MM-dd}-%i.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %tn %c{2}.%M:%L - %m%n
# %d is the date
# %-5p is the priority
# %tn for thread name
# %c{1} Logger name (org.apache.commons.Foo) and reslt (Foo)
# %L for line
# %m for message
#%M for method name
# %n for /n
#reference https://logging.apache.org/log4j/2.x/manua%l/layouts.html#PatternLayout
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
#Interval depends on the pattern specified (appender.rolling.filePattern) last value if mm then 1 minutes HH then 1H
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=10MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 20
#appender.rolling.append
loggers = rolling
logger.rolling.name = com.log4j2demo
#Make sure to change the package structure as per your application
logger.rolling.level = debug
logger.rolling.additivity = true
#The rolling file appender will be displayed on console as well
logger.rolling.appenderRef.rolling.ref = RollingFile
#Read Me
# https://logging.apache.org/log4j/2.x/manual/configuration.html#ConfigurationSyntax
# Layput https://logging.apache.org/log4j/2.x/manual/layouts.html