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