lo4j2 加载与配置
log4j2 加载外部的日志配置文件 ,两种方式 ,java 代码如下
1. 方式1
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.LoggerContext; String currentPath = System.getProperty("user.dir"); System.setProperty("configFiles", currentPath + File.separator + "conf" + File.separator); LoggerContext loggerContext = (LoggerContext) LogManager.getContext(false); File file = new File(System.getProperty("configFiles") + "log4j2.xml"); loggerContext.setConfigLocation(file.toURI());
2. 方式2
import org.apache.logging.log4j.core.config.Configurator; String currentPath = System.getProperty("user.dir"); System.setProperty("configFiles", currentPath + File.separator + "conf" + File.separator); Configurator.initialize("log4j2", System.getProperty("configFiles") + "log4j2.xml");
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <Configuration> <Properties> <Property name="LOG_INFO_LEVEL" value="debug"/> <Property name="LOG_ERROR_LEVEL" value="error"/> <Property name="LOG_HOME" value="./logs"/> <Property name="LOG_ARCHIVE" value="./logs/archive"/> <Property name="LOG_MODULE_NAME" value="wisdo"/> <Property name="LOG_MAX_SIZE" value="100 MB"/> <Property name="LOG_DAYS" value="15"/> <Property name="LOG_PATTERN" value="%d{yyyy-MM-dd hh:mm:ss.SSS} | %-5level | [%t] |%logger{50} | %L | : %msg%n"/> <Property name="TIME_BASED_INTERVAL" value="1"/> Properties> <Appenders> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout pattern="${LOG_PATTERN}"/> <ThresholdFilter level="${LOG_INFO_LEVEL}" onMatch="ACCEPT" onMismatch="DENY"/> Console> <RollingRandomAccessFile name="RollingRandomAccessFileInfo" fileName="${LOG_HOME}/${LOG_MODULE_NAME}-info.log" filePattern="${LOG_ARCHIVE}/${LOG_MODULE_NAME}-info-%d{yyyy-MM-dd}-%i.log.gz"> <Filters> <ThresholdFilter level="${LOG_ERROR_LEVEL}" onMatch="DENY" onMismatch="NEUTRAL"/> <ThresholdFilter level="${LOG_INFO_LEVEL}" onMatch="ACCEPT" onMismatch="DENY"/> Filters> <PatternLayout pattern="${LOG_PATTERN}"/> <Policies> <TimeBasedTriggeringPolicy interval="${TIME_BASED_INTERVAL}"/> <SizeBasedTriggeringPolicy size="${LOG_MAX_SIZE}"/> Policies> <DefaultRolloverStrategy max="${LOG_DAYS}"/> RollingRandomAccessFile> <RollingRandomAccessFile name="RollingRandomAccessFileError" fileName="${LOG_HOME}/${LOG_MODULE_NAME}-error.log" filePattern="${LOG_ARCHIVE}/${LOG_MODULE_NAME}-error-%d{yyyy-MM-dd}-%i.log.gz"> <Filters> <ThresholdFilter level="${LOG_ERROR_LEVEL}" onMatch="ACCEPT" onMismatch="DENY"/> Filters> <PatternLayout pattern="${LOG_PATTERN}"/> <Policies> <TimeBasedTriggeringPolicy interval="${TIME_BASED_INTERVAL}"/> <SizeBasedTriggeringPolicy size="${LOG_MAX_SIZE}"/> Policies> <DefaultRolloverStrategy max="${LOG_DAYS}"/> RollingRandomAccessFile> Appenders> <Loggers> <Root level="${LOG_INFO_LEVEL}"> <AppenderRef ref="STDOUT"/> <AppenderRef ref="RollingRandomAccessFileInfo"/> <AppenderRef ref="RollingRandomAccessFileError"/> Root> Loggers> Configuration>