Java 日志文件创建多个副本
Java Log File creates multiple copies
我正在尝试在 Java swings 应用程序中创建一个日志文件,其中将包含代码生成的所有消息。但不幸的是,它不会创建 1 个日志文件,而是创建一个如图所示的结构。我需要 1 个日志文件。
我的代码:
//get the logger object
logger = Logger.getLogger("MyLog");
try {
// This block configure the logger with handler and formatter
loggerFH = new FileHandler(System.getProperty("user.dir") + "\resources\logs\logs.txt",true);
logger.addHandler(loggerFH);
SimpleFormatter formatter = new SimpleFormatter();
loggerFH.setFormatter(formatter);
} catch (IOException | SecurityException ex) {
logger.severe(ex.getMessage());
outputArea.append(ex.getMessage());
}
正在轮换您的文件。
您是否尝试过以下解决方案:
Java FileHandler disable log rotation
FileHandler fh = new FileHandler( "path" , 0, 1, false);
我意识到我的 Logger 文件同时被多个实例使用。因此,当 filehandler 的 1 个实例锁定了对文件的访问时,就会创建一个新文件。所以我创建了一个 Synchronized class 来处理所有日志记录。而且效果很好。
public class SynchronizedLogger {
//Logger to put error logs and messages in the log file
public static Logger logger = Logger.getLogger("MyLog");
//Logger Filehandler
private static FileHandler loggerFH;
public SynchronizedLogger() {
}
public static synchronized void writeLog(String message) {
logger.info(message);
}
public SynchronizedLogger(int i) {
try {
synchronized (this) {
// This block configures the logger with handler and formatter
loggerFH = new FileHandler(System.getProperty("user.dir") + "\resources\logs\logs.txt", 0, 1, true);
logger.setUseParentHandlers(false);
logger.addHandler(loggerFH);
SimpleFormatter formatter = new SimpleFormatter();
loggerFH.setFormatter(formatter);
}
} catch (IOException | SecurityException ex) {
writeLog(ex.getMessage());
outputArea.append("\n\n" + ex.getMessage());
}
}
}
我正在尝试在 Java swings 应用程序中创建一个日志文件,其中将包含代码生成的所有消息。但不幸的是,它不会创建 1 个日志文件,而是创建一个如图所示的结构。我需要 1 个日志文件。
我的代码:
//get the logger object
logger = Logger.getLogger("MyLog");
try {
// This block configure the logger with handler and formatter
loggerFH = new FileHandler(System.getProperty("user.dir") + "\resources\logs\logs.txt",true);
logger.addHandler(loggerFH);
SimpleFormatter formatter = new SimpleFormatter();
loggerFH.setFormatter(formatter);
} catch (IOException | SecurityException ex) {
logger.severe(ex.getMessage());
outputArea.append(ex.getMessage());
}
正在轮换您的文件。
您是否尝试过以下解决方案: Java FileHandler disable log rotation
FileHandler fh = new FileHandler( "path" , 0, 1, false);
我意识到我的 Logger 文件同时被多个实例使用。因此,当 filehandler 的 1 个实例锁定了对文件的访问时,就会创建一个新文件。所以我创建了一个 Synchronized class 来处理所有日志记录。而且效果很好。
public class SynchronizedLogger {
//Logger to put error logs and messages in the log file
public static Logger logger = Logger.getLogger("MyLog");
//Logger Filehandler
private static FileHandler loggerFH;
public SynchronizedLogger() {
}
public static synchronized void writeLog(String message) {
logger.info(message);
}
public SynchronizedLogger(int i) {
try {
synchronized (this) {
// This block configures the logger with handler and formatter
loggerFH = new FileHandler(System.getProperty("user.dir") + "\resources\logs\logs.txt", 0, 1, true);
logger.setUseParentHandlers(false);
logger.addHandler(loggerFH);
SimpleFormatter formatter = new SimpleFormatter();
loggerFH.setFormatter(formatter);
}
} catch (IOException | SecurityException ex) {
writeLog(ex.getMessage());
outputArea.append("\n\n" + ex.getMessage());
}
}
}