滚动日志文件和删除旧的日志文件(Rolling log Files & removing old l

2019-09-02 20:56发布

我的工作我在哪里写标准输出到一个文本文件作为日志供我们参考一个Java基于SOAP的Web服务应用程序。 该文件被极大地增长,所以我需要检查该文件的大小...例如,如果文件大小跨越10 MB,我要创建另一个文件。

就是这样,我要创建10个文件,旋转一个接一个,直到十个文件。 达到十个文件之后,我不得不删除文件开始并重新开始创建...

我怎样才能无后删除文件。 文件将成为10?

Answer 1:

我使用的logback做到这一点。 下面的例子是基于滚动政策的时间。 取决于有多少数据在你的日志你的输出,这可能会为你工作原样。

此外,作为奖励,我的配置文件扔在日志转换成HTML,以方便查看谁想要看起来虽然日志文件管理类型。

配置文件中的相关部分:

 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs\logFile.html</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- daily rollover -- >
        <fileNamePattern>logs\logFile.%d{yyyy-MM-dd}.%i.html</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <!-- or whenever the file size reaches 10MB -- >
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <!-- keep 10 days' worth of history -- >
        <maxHistory>10</maxHistory>
    </rollingPolicy>

    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
        <charset>UTF-8</charset>
        <layout class="ch.qos.logback.classic.html.HTMLLayout">
            <pattern>%d{HH:mm:ss.SSS}%thread%level%logger%line%msg</pattern>
        </layout>           
    </encoder>
</appender> 

<root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</root>

有关Maven的依赖关系:

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.0.12</version>
    </dependency>

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.0.12</version>
    </dependency>


Answer 2:

我看到了很多的答案告诉你使用Log4J的,但你可以使用Java自身的记录器通过简单地创建一个做到这一点的FileHandler :

Handler handler =
    new FileHandler("%h/MyService-%g.log", 10 * 1024 * 1024, 10);
handler.setLevel(Level.ALL);
Logger.getLogger("").addHandler(handler);


Answer 3:

在你的log4j.xml可以尝试以下方法:

<appender name="fileappender" class="org.apache.log4j.RollingFileAppender">
      <param name="file" value="applog.log"/>
      <param name="Append" value="true" />
      <param name="MaxBackupIndex" value="10"/>

      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
      </layout>
   </appender>

该值告诉的log4j.xml只保持10个左右旋转的日志文件。

另外,如果您使用的是属性文件(而不是XML)

log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.File=applog.log
log4j.appender.File.Append=true
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
log4j.appender.[appenderName].MaxBackupIndex = 10


Answer 4:

大多数日志框架提供你在找什么。 在的logback你应该能够通过适当配置RollingFileAppender进行实现它:

RollingFileAppender进行扩展FileAppender有能力侧翻日志文件。 例如,可以RollingFileAppender进行记录到文件名为log.txt文件,一旦特定条件满足时,改变其日志目标到另一个文件。

RollingPolicy负责涉及文件移动和重命名的翻车过程。

http://logback.qos.ch/manual/appenders.html



Answer 5:

Log4j的可以做到这一点。 具体地, RollingFileAppender进行类。



Answer 6:

如果你使用java.util.logging.Logger ,你可以做到这一点FileHandler

来源: kodejava

package org.kodejava.example.logging;

import java.util.logging.Logger;
import java.util.logging.FileHandler;
import java.util.logging.SimpleFormatter;
import java.io.IOException;

public class RollingLogFile {
    //
    // Set a small log file size to demonstrate the rolling log files.
    //
    public static final int FILE_SIZE = 1024;

    public static void main(String[] args) {
        Logger logger = Logger.getLogger(RollingLogFile.class.getName());

        try {
            //
            // Creating an instance of FileHandler with 5 logging files
            // sequences.
            //
            FileHandler handler = new FileHandler("myapp.log", FILE_SIZE, 5, true);
            handler.setFormatter(new SimpleFormatter());
            logger.addHandler(handler);
            logger.setUseParentHandlers(false);
        } catch (IOException e) {
            logger.warning("Failed to initialize logger handler.");
        }

        logger.info("Logging information message.");
        logger.warning("Logging warning message.");
    }
}


文章来源: Rolling log Files & removing old log files