我正在特定路径中创建一个.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);
}
}
}
如何始终在同一文件上写日志?
答案 0 :(得分:1)
您需要构建一个FileHandler,并启用append选项以附加到现有日志文件。
在构建fileHandler的行上,从
更改它 new FileHandler(fileName)
到
new FileHandler(fileName, true)
这使用this constructor告诉FileHandler附加到文件。
答案 1 :(得分:1)
每次调用该方法时,您都会创建一个新的FileHandler
并将其添加到记录器实例中。您最终会有多个处理程序同时尝试写入相同的文件名,第一个创建文件并将其锁定,以便其余文件名必须使用备用文件名。