log4j2使用RollingFile重启丢失日志问题
<RollingFile name="cnkiLogRollingFileError" fileName="${logbigdata.dir}/Log8080/error.log"
filePattern="${logbigdata.dir}/Log8080/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log" >
<Filters>
<!--warn/error/fatal级别的日志都输出到error.log,-->
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
<SizeBasedTriggeringPolicy size="500 MB"/>
</Policies>
</RollingFile>
比如原始日志配置如此,每日滚动,日志满500M滚动。这样在日志收集时,如果重启tomcat或者java -jar 重新运行应用程序时,会造成info.log原有内容消失,从而丢失了部分日志内容。
append="true":这个并不能解决丢失的问题 默认也是true的
createOnDemand="true":这个配置能完美解决这个问题
默认为false,该appender按需创建文件,当日志事件通过所有的filters并且通过路由指向了该appender,该appender仅仅创建该文件