log4J2的配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF" monitorInterval="10">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<ThresholdFilter level="DEBUG" />
<PatternLayout pattern="[%-level][%d{yyyy-MM-dd HH:mm:ss,SSS}][%logger{36}]%msg%n" />
</Console>
<!-- 默认日志 -->
<RollingFile name="defaultLog" fileName="${sys:catalina.home}/logs/my-web.log" filePattern="${sys:catalina.home}/logs/my-web.%d{yyyy-MM-dd}.log">
<PatternLayout pattern="[%-level][%d{yyyy-MM-dd HH:mm:ss,SSS}][%logger{36}]%msg%n" />
<ThresholdFilter level="INFO" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="${sys:catalina.home}/logs" maxDepth="1">
<IfFileName glob="my-web.*.log" />
<IfLastModified age="10d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</appenders>
<loggers>
<root level="all">
<!-- <appender-ref ref="Console" /> -->
<appender-ref ref="defaultLog" />
</root>
</loggers>
</configuration>
本地测试没问题,部署到线上后,每当隔天,日志会在前一天的日志中进行输出,当天的日志文件也有输出。
比如今天2019年4月28号:
-rw-r----- 1 root root 19M Apr 25 23:59 my-web.2019-04-24.log
-rw-r----- 1 root root 20M Apr 26 23:59 my-web.2019-04-25.log
-rw-r----- 1 root root 689K Apr 27 17:09 my-web.2019-04-26.log
-rw-r----- 1 root root 8.4M Apr 28 09:26 my-web.2019-04-27.log
-rw-r----- 1 root root 59K Apr 28 09:24 my-web.log
查看日志文件时,发现今天的日志在my-web.2019-04-27.log和my-web.log中均有输出。
网上查过,有说是因为tomcat配置的问题。线上部署的为了直接能够通过域名访问,所在server.xml中添加了context的配置,我按照一些说法,给context的name属性赋值,部署上去,发现不起作用,以下是tomcat的配置:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="my-web" debug="0" reloadable="true" name="/my-web/"></Context>
</Host>
有没有知道原因的或是也遇到过此类问题的