Java 使用记录器创建文件

Java 使用记录器创建文件,java,java-8,Java,Java 8,我正在一个特定的路径中创建一个.log文件,但是我有一个问题,创建一个静态类,每次我调用writing方法时,就像创建一个新的.log文件一样,注册表必须始终保持在同一个文件上 以下是测试代码: import java.io.IOException; import java.util.logging.FileHandler; import java.util.logging.Logger; import java.util.logging.SimpleFormatter; public cla

我正在一个特定的路径中创建一个.log文件,但是我有一个问题,创建一个静态类,每次我调用writing方法时,就像创建一个新的.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);
        }
    }
}
import java.io.IOException;
导入java.util.logging.FileHandler;
导入java.util.logging.Logger;
导入java.util.logging.SimpleFormatter;
公共类UTIL{
公共静态无效描述日志(字符串rutaArchivo,字符串mensaje){
Logger=Logger.getLogger(“MyLog”);
文件处理程序fh;
试一试{
fh=新文件处理程序(rutaArchivo);
记录器.addHandler(fh);
SimpleFormatter formatter=新的SimpleFormatter();
设置格式化程序(格式化程序);
logger.info(mensaje);
}捕获(安全异常e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
公共静态void main(字符串…参数){

对于(inti=1;i,您需要构造一个启用了append选项的FileHandler,以附加到现有日志文件

在构建fileHandler的行中,将其从

    new FileHandler(fileName)


这将利用它告诉FileHandler追加到文件。

您需要构造一个启用了追加选项的FileHandler,以便追加到现有日志文件

在构建fileHandler的行中,将其从

    new FileHandler(fileName)


这将使用它告诉FileHandler追加到文件。

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

您正在创建一个新的
文件处理程序
,并在每次调用该方法时将其添加到记录器实例。您最终会遇到多个处理程序试图同时写入同一文件名,第一个处理程序创建并锁定该文件,因此其他处理程序必须使用备用文件名。

谢谢Sean。尝试创建一个在生成日志之前删除文件,但同样的事情仍在发生。您可能还需要启用追加(请参阅其他答案)。谢谢Sean。请尝试在生成日志之前创建文件,但同样的事情仍在发生。您可能还需要启用追加(请参阅其他答案)。谢谢@konsolas,已经添加了行
新文件处理程序(fileName,true)
。但是,我仍然有同样的问题。除此之外,还需要在末尾用
fh.close();
关闭文件处理程序,以便它写入同一文件。谢谢@konsolas,已经添加了行
新文件处理程序(fileName,true)
。但是,我仍然有同样的问题。除此之外,还需要在末尾使用
fh.close();
关闭FileHandler,以便它写入同一个文件。