一、添加maven依赖
<dependencies> <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> </dependencies>
二、日志配置文件log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <properties> <Property name="console-pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%level] %logger{36} - %msg%n</Property> <property name="error-file">log4j2learn</property> </properties> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="${console-pattern}" /> </Console> <RollingRandomAccessFile name="RollingRandomAccessFile" fileName="${error-file}" filePattern="${error-file}-%d{yyyy-MM-dd HH:mm}-%i.log"> <PatternLayout pattern="${console-pattern}" /> <Policies> <TimeBasedTriggeringPolicy interval="1"/> <!-- 相隔多长时间创建一个新文件,与RollingRandomAccessFile节点的filePattern保持一致,在这个实例中最小时间单位为mm,故每隔1分钟生成一个新日志文件--> <!-- 超出10kb则另外创建一个新文件保存--> <SizeBasedTriggeringPolicy size="10 KB" /> </Policies> </RollingRandomAccessFile> <Async name="RollingRandomAppender"> <AppenderRef ref="RollingRandomAccessFile" /> </Async> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console" /> <appenderRef ref="AsyncAppender" /> </Root> <Logger name="RandomAccessFileLogger" level="error"> <appenderRef ref="RollingRandomAppender" /> </Logger> </Loggers> </Configuration>
三、测试代码
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** * @author : zhangyanqing * @time : 2017/12/9 * @desc : ${DESCRIPTION} */ public class RandomAccessLoggerTest { public static final Logger LOGGER = LogManager.getLogger("RandomAccessFileLogger"); public static void main(String[] args){ for (int i = 0; i< 50000; i++){ LOGGER.trace("trace level"); LOGGER.debug("debug level"); LOGGER.info("info level"); LOGGER.warn("warn level"); LOGGER.error("error level"); LOGGER.fatal("fatal level"); } } }