初識log4j2和log4j
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Log4j2Test {
public static void main(String[] args) {
System.setProperty("log4j.skipJansi", "true");//2020-02-13 13:41:25,889 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
// Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);
Logger logger = LogManager.getLogger("mylog");
logger.trace("trace level");
logger.debug("debug level");
logger.info("info level");
logger.warn("warn level");
logger.error("error level");
logger.fatal("fatal level");
}
}
關於代碼第一行所報警告的解決方案的詳細描述,見:https://segmentfault.com/a/1190000002573352
若此工程下(建議resources目錄)沒有log4j2.xml文件,則報錯以及運行結果爲
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
14:12:28.891 [main] ERROR mylog - error level
14:12:28.894 [main] FATAL mylog - fatal level
當在resources目錄下添加log4j2.xml,內容爲
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<properties>
<property name="LOG_HOME">E:/logs</property>
<property name="FILE_NAME">mylog</property>
<property name="log.sql.level">info</property>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %l - %msg%n" />
</Console>
<RollingRandomAccessFile name="RollingRandomAccessFile" fileName="${LOG_HOME}/${FILE_NAME}.log" filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd HH-mm}-%i.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %l - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Root level="warn">
<AppenderRef ref="Console" />
<AppenderRef ref="RollingRandomAccessFile" />
</Root>
<Logger name="com.dy.hbase2hbase" level="${log.sql.level}" additivity="false">
<AppenderRef ref="Console" />
</Logger>
<Logger name="mylog" level="${log.sql.level}" additivity="false">
<AppenderRef ref="Console" />
</Logger>
</Loggers>
</Configuration>
位置結構如圖
針對上圖的報錯,只需在resources目錄下添加log4j.properties文件,其內容爲
log4j.rootLogger=info, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
#1.應用於控制檯
#log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
#log4j.appender.Threshold = DEBUG
#log4j.appender.CONSOLE.Target = System.out
#log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n
##log4j.appender.CONSOLE.layout.ConversionPattern = [start] % d {DATE} [DATE] % n % p[PRIORITY] % n % x[NDC] % n % t[THREAD] n % c[CATEGORY] % n % m[MESSAGE] % n % n
# 2.應用於文件
#log4j.appender.FILE = org.apache.log4j.FileAppender
#log4j.appender.FILE.File = file.log
#log4j.appender.FILE.Append = false
#log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
#log4j.appender.FILE.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n
# Use this layout for LogFactor 5 analysis
# 3.應用於文件
#log4j.appender.FILE = org.apache.log4j.FileAppender
#log4j.appender.FILE.File = file.log
#log4j.appender.FILE.Append = false
#log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
#log4j.appender.FILE.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n
# Use this layout for LogFactor 5 analysis
而該工程所需要的pom.xml爲
<!-- slf4j + log4j begin -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.10</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- log4j end-->