log4j的:在失败后关闭翻转动作用TimeBasedRollingPolicy(log4J: Fa

2019-09-19 10:32发布

我有安装TimeBasedRollingPolicy对转出每分钟(测试目的)的文件,我面临的问题是一个警告,并正在创建任何ZIP或GZ文件。 警告是:

log4j的:WARN在后接近侧翻动作失灵

我附源推测出的问题,但都没有成功呢。 我失去了我的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的,额外-1.1。 有人看到这个问题,或者有关于它的任何线索?

Answer 1:

用“ 的log4j:WARN在关闭后侧翻动作失灵 ”问题的消息是,在基于Windows的系统,你不能与创建一个文件名“:”字符,所以指定的FileNamePattern不应包含其中任何一个:\, /,:,*,?,”,<,>,|

这是我的应用程序工作正常使用滚动文件附加目的地一的log4j.xml。 出于测试目的,我所做的滚动创建一个新的文件,每一秒:

<?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}"/>

试图在压缩文件之前,试试这个。



Answer 2:

我打的log4j同样的问题与WARN消息 - “的log4j:WARN在后接近侧翻动作失灵”和日志文件没有翻身。 这是根导致权限问题上的不足,这将日志文件获取写入的目录。 在这种情况下,Java的File.renameTo()方法默默地失败(只是返回一个布尔值false)。 花了大量的时间来弄清楚这个问题:(



Answer 3:

我使用log4j的-1.2.17和Apache的log4j的,额外-1.1。 有没有人看到这个问题,并有相关线索?

我一直在使用log4j的 - 1.2也观察到了这个问题。 16和Apache的log4j的,额外-1.1。 确切的同样的信息。

我曾尝试过各种调整都无济于事。 当它没有appender->文件参数和rollingPolicy-> ActiveFileName参数使用时rollingPolicy-> FileNamePattern似乎是观察到的唯一时间。 但是即便这样我还没有看到它翻转成功也不GZzip以前的文件。

我也得到同样的信息:

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

非常令人沮丧。



Answer 4:

我也有同样的问题,但对我来说,这是因为一个事实,即在“fileNamePattern”路径文件夹不存在。 整顿是为我工作,并正在创建的翻转文件即可。



Answer 5:

对我来说,解决办法是手动创建归档文件的目录。



Answer 6:

如果您使用的是org.apache.log4j.rolling.TimeBasedRollingPolicy rollingPolicy,那么目录必须要的log4j能够旋转之前存在。

例如,如果在/ var /日志/胡说/存档/ YYYY / MM目录中存在以下侧翻只会工作; 在夜间的cronjob应该做的伎俩创建它。 而且,正如前面提到的,这也将在没有足够的权限创建日志文件出现。

  <appender name="infoFile"
            class="org.apache.log4j.rolling.RollingFileAppender">
    <param name="threshold"
           value="INFO"/>
    <param name="append"
           value="true"/>
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
      <param name="ActiveFileName"
             value="/var/log/blah/file.log"/>
      <!-- IMPORTANT the archive folder must already exist, or log4j cannot
      put the rotated log there, and will keep using the old one -->
      <param name="FileNamePattern"
             value="/var/log/blah/archive/%d{yyyy}/%d{MM}/file.log.%d{yyyy-MM-dd}.gz"/>
    </rollingPolicy>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern"
             value="%5p | %-40c{2} | %-4L | %d{yyyy-MM-dd}T%d{HH:mm:ss} | %m%n"/>
    </layout>
  </appender>


文章来源: log4J: Failure in post-close rollover action using TimeBasedRollingPolicy
标签: log4j