log4J: 使用TimeBasedRollingPolicy的收盘后翻转动作失败[英] log4J: Failure in post-close rollover action using TimeBasedRollingPolicy

本文是小编为大家收集整理的关于log4J: 使用TimeBasedRollingPolicy的收盘后翻转动作失败的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

我已经设置了TimeBaseadRollingPolicy,每分钟(出于测试目的)将文件推出,而我面临的问题是警告,并且没有创建zip或gz文件.警告是:

log4j:警告关闭后翻车动作中的故障

我附上了来解决问题的来源,但还没有成功.我是否缺少log4j.xml中的任何配置?

<appender name="errorAppender" class="org.apache.log4j.rolling.RollingFileAppender">
        <param name="File" value="C:/error.log"/>
        <param name="Append" value="true"/>
        <param name="BufferedIO" value="true"/>
        <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
            <param name="FileNamePattern" value="C:/error.%d{ddMMMyyyy HH:mm:ss}.log.gz" />
        <param name="ActiveFileName" value="C:/error.log"/>
    </rollingPolicy>

        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %C (line:%L) - %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMax" value="error"/>
            <param name="LevelMin" value="error"/>
            <param name="AcceptOnMatch" value="true"/>
        </filter>
    </appender>

我正在使用log4j-1.2.17和apache-log4j-extras-1.1.有人看过这个问题或对此有任何线索吗?

推荐答案

" log4j:关闭后滚动动作中的故障 "消息是,在基于Windows的系统中,您无法与":" char,因此指定的fileNamePattern不应包含其中任何一个:\,/,:, *,?,",<,>,|

这是我应用程序的log4j.xml,它使用滚动文件appender正常工作.为了测试目的,我每秒进行了滚动以创建一个新文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="consola" class="org.apache.log4j.ConsoleAppender"> 
    <param name="target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="conversionPattern" value="[%d{yyyyMMdd HH:mm:ss:mm,SSS}]%-5p [%t] [%c{1}-%M:%L] - %m%n"/>
    </layout> 
  </appender> 

  <appender name="desarr" class="org.apache.log4j.rolling.RollingFileAppender">
    <param name="Append" value="false"/>
    <rollingPolicy name="desarr" class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="fileNamePattern" value="C:/workspace/Probador/log/backups/importacion222.log_%d{mmss_mm}"/>
        <param name="activeFileName" value="C:/workspace/Probador/log/importacion222.log"/>
    </rollingPolicy> 
   <layout class="org.apache.log4j.PatternLayout"> 
        <param name="conversionPattern" value="[%d{yyyyMMdd HH:mm:ss:mm,SSS}]%-5p [%t] [%c{1}-%M] - %m%n"/>
   </layout> 
  </appender> 

  <root> 
    <priority value ="debug" /> 
    <appender-ref ref="consola" /> 
    <appender-ref ref="desarr"/>
  </root>

</log4j:configuration>

特别注意:

<param name="fileNamePattern" value="C:/workspace/Probador/log/backups/importacion222.log_%d{mmss_mm}"/>

尝试将文件拉链之前尝试一下.

其他推荐答案

我在log4j中遇到了同一问题,并带有警告消息 - " log4j:警告后关闭后滚动动作中的故障",日志文件没有滚动.这是导致对日志文件写入的目录的足够权限问题的根源.在这种情况下,java的file.renameto()方法正在默默失败(只返回布尔值false).花了很多时间来弄清楚这个问题:(

其他推荐答案

我正在使用log4j-1.2.17和apache-log4j-extras-1.1.有没有人见过 这个问题并有任何线索吗?

我还使用log4j-1.2. 16 和apache-log4j-extras-1.1观察到了这个问题.完全相同的消息.

我尝试了各种调整,但无济于事.似乎观察到 RollingPolicy-> FileNamePattern 似乎是在没有 appender-> file 参数参数和 rollingpolicy-> ActiveFilename 的情况下使用它的时候范围.但是,即使我仍然没有看到它成功地转换,也没有 gz 或 zip 上一个文件.

我也收到相同的消息:

log4j: setFile called: somepath/somefile.log, true
log4j: setFile ended
log4j:WARN Failure in post-close rollover action

非常令人沮丧.

本文地址:https://www.itbaoku.cn/post/1575002.html

问题描述

I have setup TimeBasedRollingPolicy to rollout the file every minute (for test purpose) and the problem I am facing is a warning and no zip or gz file is being created. Warning is:

log4j:WARN Failure in post-close rollover action

I attached the source to figure-out the problem but have no success yet. Am I missing any configuration in my log4j.xml?

<appender name="errorAppender" class="org.apache.log4j.rolling.RollingFileAppender">
        <param name="File" value="C:/error.log"/>
        <param name="Append" value="true"/>
        <param name="BufferedIO" value="true"/>
        <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
            <param name="FileNamePattern" value="C:/error.%d{ddMMMyyyy HH:mm:ss}.log.gz" />
        <param name="ActiveFileName" value="C:/error.log"/>
    </rollingPolicy>

        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %C (line:%L) - %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMax" value="error"/>
            <param name="LevelMin" value="error"/>
            <param name="AcceptOnMatch" value="true"/>
        </filter>
    </appender>

I am using log4j-1.2.17 and apache-log4j-extras-1.1. Has anybody seen this problem or have any clue about it?

推荐答案

Problem with "log4j:WARN Failure in post-close rollover action" message is that in windows-based systems you can not create a file name with the ":" char, so the FileNamePattern specified should not contain any one of these: \, /, :, *, ?, ", <, >, |

Here it is a log4j.xml for my application that works fine using a rolling file appender. For testing purposes I made the rolling to create a new file every second:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="consola" class="org.apache.log4j.ConsoleAppender"> 
    <param name="target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="conversionPattern" value="[%d{yyyyMMdd HH:mm:ss:mm,SSS}]%-5p [%t] [%c{1}-%M:%L] - %m%n"/>
    </layout> 
  </appender> 

  <appender name="desarr" class="org.apache.log4j.rolling.RollingFileAppender">
    <param name="Append" value="false"/>
    <rollingPolicy name="desarr" class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="fileNamePattern" value="C:/workspace/Probador/log/backups/importacion222.log_%d{mmss_mm}"/>
        <param name="activeFileName" value="C:/workspace/Probador/log/importacion222.log"/>
    </rollingPolicy> 
   <layout class="org.apache.log4j.PatternLayout"> 
        <param name="conversionPattern" value="[%d{yyyyMMdd HH:mm:ss:mm,SSS}]%-5p [%t] [%c{1}-%M] - %m%n"/>
   </layout> 
  </appender> 

  <root> 
    <priority value ="debug" /> 
    <appender-ref ref="consola" /> 
    <appender-ref ref="desarr"/>
  </root>

</log4j:configuration>

Special attention to:

<param name="fileNamePattern" value="C:/workspace/Probador/log/backups/importacion222.log_%d{mmss_mm}"/>

Try this before attempting to zip the file.

其他推荐答案

I hit the same issue in log4j with WARN message - "log4j:WARN Failure in post-close rollover action" and the log file was not rolling over. It was root caused to insufficient permission issue on the directory into which log file was getting written. In this case, Java's File.renameTo() method was failing silently (just returns a boolean false). Took lot of time to figure out the issue :(

其他推荐答案

I am using log4j-1.2.17 and apache-log4j-extras-1.1. Has anybody seen this problem and have any clue about it?

I have also observed this problem using log4j-1.2.16 and apache-log4j-extras-1.1. The exact same message.

I have tried various tweaks to no avail. The only time when rollingPolicy->FileNamePattern seems to be observed is when it is used without the appender->File parameter and rollingPolicy->ActiveFileName parameter. But even still I have not seen it rollover successfully nor gz or zip previous files.

I also get the same messages:

log4j: setFile called: somepath/somefile.log, true
log4j: setFile ended
log4j:WARN Failure in post-close rollover action

Very frustrating.