log4j2.xml和读取配置文件

时间:2022-01-05 21:52:07
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30" strict="true" schema="Log4J-V2.2.xsd">
<Properties>
<Property name="filename">${date:yyyy-MM-dd}</Property>
<!--
%d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间
%p : 日志输出格式
%c : logger的名称
%m : 日志内容,即 logger.info("message")
%n : 换行符
%C : Java类名
%L : 日志输出所在行数
%M : 日志输出所在方法名
hostName : 本地机器名
hostAddress : 本地ip地址
-->
<Property name="pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5level] - %l - %msg%n</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5level] %logger{36} - %l - %msg%n"/>
</Console>
<!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
<File name="MyFile" fileName="app.log" append="true">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
<!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/${filename}-info.log"
filePattern="${sys:user.home}/logs/$${date:yyyy-MM-dd}/info-%d{yyyy-MM-dd}-%i.log">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${pattern}"/>
<Policies>
<!-- 每24小时更新一次 -->
<TimeBasedTriggeringPolicy modulate="true" interval="24"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<DefaultRolloverStrategy max="2"/>
</RollingFile>
<RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/${filename}-warn.log"
filePattern="${sys:user.home}/logs/$${date:yyyy-MM-dd}/info-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${pattern}"/>
<Policies>
<!-- 每24小时更新一次 -->
<TimeBasedTriggeringPolicy modulate="true" interval="24"/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
<DefaultRolloverStrategy max="2"/>
</RollingFile>
<RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/${filename}-error.log"
filePattern="${sys:user.home}/logs/$${date:yyyy-MM-dd}/error-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${pattern}"/>
<Policies>
<!-- 每24小时更新一次 -->
<TimeBasedTriggeringPolicy modulate="true" interval="24"/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="2"/>
</RollingFile>
</Appenders>
<Loggers>
<!--<Logger name="sel4jTest" level="info">-->
<!--<AppenderRef ref="MyFile"/>-->
<!--</Logger>-->
<logger name="org.springframework" level="FATAL"></logger>
<logger name="org.apache.activemq" level="FATAL"></logger>
<Root level="all">
<appender-ref ref="Console"/>
<!--开启info级别日志-->
<!--<AppenderRef ref="RollingFileInfo"/>-->
<!--&lt;!&ndash;开启warn级别日志&ndash;&gt;-->
<!--<AppenderRef ref="RollingFileWarn"/>-->
<!--&lt;!&ndash;开启error级别日志&ndash;&gt;-->
<!--<AppenderRef ref="RollingFileError"/>-->
</Root>
</Loggers>
</Configuration>

---------------------------------------------------------------------------------------------------------------------------------------------------
自动化测试日志
public class Log4j_Bean {
public static Logger getLogger(){
return LogManager.getLogger(ResolverUtil.Test.class.getName());
}
}