Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让log4j根据日期和大小滚动文件?_Log4j - Fatal编程技术网

如何让log4j根据日期和大小滚动文件?

如何让log4j根据日期和大小滚动文件?,log4j,Log4j,因此,log4j附带了两个现有的日志滚轴:RollingFileAppender和DailRollingFileAppender。有没有人听说过一个appender同时做前一个做的事情 我需要一个appender,它将根据文件大小滚动日志文件,但也将当前日期附加到它 我一直在考虑创建我自己的appender,但是如果已经创建了一个appender,为什么不节省时间并使用它呢?看起来您希望混合使用和 你必须自己编写代码。好消息是:你只需要“合并”这些类的功能,不需要“低级”的新代码。我知道这篇文章

因此,log4j附带了两个现有的日志滚轴:RollingFileAppender和DailRollingFileAppender。有没有人听说过一个appender同时做前一个做的事情

我需要一个appender,它将根据文件大小滚动日志文件,但也将当前日期附加到它


我一直在考虑创建我自己的appender,但是如果已经创建了一个appender,为什么不节省时间并使用它呢?

看起来您希望混合使用和


你必须自己编写代码。好消息是:你只需要“合并”这些类的功能,不需要“低级”的新代码。

我知道这篇文章有点晚了,但你可以试试TimeAndSizeRollingAppender。它在Apache2.0许可证下免费提供,请从下载。

来自“同伴”项目的Log4J Extras提供了一系列滚动策略,包括您正在寻找的内容

APIDoc:
主页:

我们使用您看到的类。它按照您描述的方式工作,并扩展FileAppender。

太晚了,无法回复。但希望这能帮助一些人

将log4j依赖项添加到pom.xml文件中


log4j
log4j
1.2.17
获取此FileAppender实现的副本。感谢这个文件的作者

http://haobangshou.googlecode.com/svn/trunk/hbs/APPLICATION/server/common/src/com/hbs/common/appender/TimeSizeRollingFileAppender.java
将此log4j.xml文件放在资源文件夹中


要进行快速测试,请执行以下操作:

import org.apache.log4j.Logger;
公共班机{
静态公共void main(字符串[]args){
Logger log=Logger.getLogger(Main.class);
对于(int i=0;i<10000;i++)
日志信息(“测试日志”);
}
}
完成

使用Log4j 正如@JavaJigs所说,可以使用Log4j的额外功能

首先,如果您使用的是Maven,请将其添加为依赖项,记住使用相同的log4j版本,以避免任何冲突

<!-- you should already have something like this -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

<!-- add this one, please note the version is the same than log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>apache-log4j-extras</artifactId>
    <version>1.2.17</version>
</dependency>
显然,文件的数量及其名称取决于应用程序的日志记录方式

如您所见,
%i
占位符被替换为一种随机但不断增加的数字。但我无法找到一种方法将其替换为从0开始的数字。然而,按字母顺序列出的此类文件应与其历史顺序相匹配

其他想法
我知道你明确提到log4j。但是,如果可以,为什么不考虑迁移到log4j2呢?有几个例子似乎适合您的需要。

我最终创建了自己的FileAppender,它只是一个滚动FileAppender,在每个滚动文件上添加当前日期。这些是最近的吗?这很酷。org.apache.log4j.rolling包看起来非常有用。谢谢!:)美好的我来测试一下。谢谢你的意见!链接已断开。现在你得去学校了。然后下载。然后转到source-archive.zip/haobangshou/trunk/hbs/APPLICATION/server/common/src/com/hbs/common/appender/TimeSizeRollingFileAppender.javaI我怀疑%i号是时间戳。我现在得到的结果和你的一个例子之间的差别非常接近60天(秒)。
<appender name="rollout5" class="org.apache.log4j.rolling.RollingFileAppender">
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="ActiveFileName" value="log4j-current.log" />
        <param name="FileNamePattern" value="log4j-%d{HH-mm}.%i.log.gz" />
    </rollingPolicy>
    <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
        <param name="MaxFileSize" value="1000" />
    </triggeringPolicy>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n" />
    </layout>
</appender>
log4j-current.log
log4j-18-13.1480266729211.log.gz
log4j-18-12.1480266729095.log.gz
log4j-18-12.1480266729123.log.gz