5 java logging exception-logging
我有一个扫描一组文件的应用程序。这种扫描是并行进行的。我的意思是,如果我上传 5 个文件,将创建五个进程并开始并行执行作业。现在,为了记录正在运行的作业的异常,只有一个日志文件。接下来的问题是,记录器创建了很多日志文件 -
mylogfile.log(actual log file)
mylogfile.log.1
mylogfile.log.2
mylogfile.log.3
mylogfile.log.4
mylogfile.log.5
...
Run Code Online (Sandbox Code Playgroud)
及其各自的锁定文件。下面是我使用的代码片段:
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;
}
Run Code Online (Sandbox Code Playgroud)
我如何确保只使用一个日志文件来写入所有并行运行的作业的异常..?
谢谢,
安尼什
这和并行调用没有太大关系。同样,从单线程每次调用 getLogger (即使使用相同的字符串作为参数),您也可以创建一个新的 FileHandler 并将其添加到现有记录器中。也许您不想每次调用 getLogger 时都进行所有设置 -方法。
//now we will create new Filehandler and set it to logger
getLogger("identifier").log(Level.SEVERE, "Log to one file");
//now we have already one filehandler, but lets add one more
getLogger("identifier").log(Level.SEVERE, "Log to two files");
//now we have already two filehandlers, but lets add one more
getLogger("identifier").log(Level.SEVERE, "Log to three files");
Run Code Online (Sandbox Code Playgroud)
配置日志记录一次,之后您可以通过 java.util.loggingLogger.getLogger 获取对记录器的引用。Sun 的概述提供了如何通过属性文件配置日志记录的更多想法。
| 归档时间: |
|
| 查看次数: |
10284 次 |
| 最近记录: |