gpt4 book ai didi

java - java.util.logging 和锁定文件的问题

转载 作者:搜寻专家 更新时间:2023-11-01 02:56:10 27 4
gpt4 key购买 nike

我有一个扫描一组文件的应用程序。这种扫描是并行进行的。我的意思是,如果我上传 5 个文件,将创建五个进程并开始并行执行作业。现在为了记录正在运行的作业的异常,只有一个日志文件。即将到来的问题是,记录器创建了大量的日志文件 -

mylogfile.log(actual log file)

mylogfile.log.1

mylogfile.log.2

mylogfile.log.3

mylogfile.log.4

mylogfile.log.5
...

及其各自的锁定文件。下面是我使用的代码片段:

  public static Logger getLogger(final String className) {
final Logger logger = Logger.getLogger(className);
FileHandler fh;
try {
// This block configure the logger with handler and formatter
fh = new FileHandler("mylogfile.log", true);
logger.addHandler(fh);
logger.setLevel(Level.ALL);
logger.setUseParentHandlers(false);
fh.setFormatter(new SimpleFormatter());
} catch (final SecurityException e) {
// }
} catch (final IOException e) {
//
}
return logger;
}

如何确保只使用一个日志文件来写入所有并行运行的作业的异常..??

谢谢,

安尼施

最佳答案

我遇到了同样的问题,我缺少的是一个标准的编程实践,即我应该在完成日志记录后关闭文件处理程序。因此,您可以创建多个记录器,但请确保在最后关闭它们。

以下示例中的 2 行:

  • successLogFileHandler.close();
  • failureLogFileHandler.close();

class LoggerExample {
private Logger loggerFailure;
private Logger loggerSuccess;

public void myLogger() {
// some code block
FileHandler successLogFileHandler = new FileHandler(successLogFile.getAbsolutePath());
FileHandler failureLogFileHandler = new FileHandler(failureLogFile.getAbsolutePath());
// Create loggers
loggerFailure = createLogger(STR_FAILURE_LOG_FILE, failureLogFileHandler, Level.INFO, customFormatter);
loggerSuccess = createLogger(STR_SUCCESS_LOG_FILE, successLogFileHandler, Level.INFO, customFormatter);
// Write messages into loggers
// and at the end close the file handlers
successLogFileHandler.close();
failureLogFileHandler.close();
}

public static Logger createLogger(String strLoggerName, FileHandler handler, Level level, Formatter formatter) throws Exception
{
Logger logger = Logger.getLogger(strLoggerName);
logger.setLevel(level);
handler.setFormatter(formatter);
logger.addHandler(handler);
return logger;
}
}

关于java - java.util.logging 和锁定文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1154025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com