使用记录器创建文件

时间:2017-08-29 19:40:20

标签: java java-8

我正在特定路径中创建一个.log文件,但是我有一个问题,创建一个静态类,每次调用writeLike方法创建一个新的.log文件时,注册表必须始终保留在同一个文件上。

这是测试代码:

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

public class Utils {

    public static void escribirLog(String rutaArchivo, String mensaje) {

        Logger logger = Logger.getLogger("MyLog");
        FileHandler fh;

        try {

            fh = new FileHandler(rutaArchivo);
            logger.addHandler(fh);

            SimpleFormatter formatter = new SimpleFormatter();
            fh.setFormatter(formatter);

            logger.info(mensaje);

        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String... args){
        for(int i=1;i<6;i++){
            escribirLog("C:\\rutaLog\\archivo.log", "MensajePrueba"+i);
        }
    }
}

enter image description here

如何始终在同一文件上写日志?

2 个答案:

答案 0 :(得分:1)

您需要构建一个FileHandler,并启用append选项以附加到现有日志文件。

在构建fileHandler的行上,从

更改它
    new FileHandler(fileName)

    new FileHandler(fileName, true)

这使用this constructor告诉FileHandler附加到文件。

答案 1 :(得分:1)

每次调用该方法时,您都会创建一个新的FileHandler并将其添加到记录器实例中。您最终会有多个处理程序同时尝试写入相同的文件名,第一个创建文件并将其锁定,以便其余文件名必须使用备用文件名。