Kev*_*gol 6 java logging tomcat logback spring-boot
我有一个在Tomcat服务器上运行的记录器应用程序.我在spring boot框架上使用logback.下面是我的logback.xml文件
<configuration debug="true">
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/audit/audit.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>/var/log/audit/audit_%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 50MB -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<append>true</append>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<logger name="com.logger.rest">
<appender-ref ref="FILE" />
</logger>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我的应用程序正确记录到/var/log/audit/audit.log.但在某些时候我需要删除日志文件.删除后,我注意到在调用记录器应用程序时没有创建新的audit.log文件.只有当我重新启动记录器应用程序时才会生成新的日志文件.
是否有任何方法可以绕过应用程序重新启动,以便logback自动创建一个新的audit.log文件(在创建日志记录信息时),以防它被删除
当你的应用程序运行时(和你的应用程序中的logback已打开的句柄到日志文件),如果您删除日志文件,然后将的logback不知道该文件已被删除(因为的logback过程中仍然有一个开放的文件句柄)但是由于文件已被删除,Logback实际上无法将任何内容写入磁盘,这种情况一直存在,直到重新初始化Logback(并且FileAppender重新创建文件).通常,这将在应用程序启动时完成.
针对Logback 存在一个未解决的问题,要求在这种情况下更改Logback的行为.
在应用程序处于活动状态时删除应用程序的日志子系统(即Logback)配置为写入的文件有点不寻常.也许你试图通过删除文件解决的问题可以通过其他方式解决?如果不是,即如果您必须能够删除正在运行的日志文件并期望Logback创建新文件,那么我认为您的选项是:
| 归档时间: |
|
| 查看次数: |
1770 次 |
| 最近记录: |