【问题标题】:Java Logging to files using patternJava 使用模式记录到文件
【发布时间】:2014-02-05 15:08:13
【问题描述】:

我编写了一个 CXF SOAP 客户端,并希望为每次运行创建编号的日志文件。

我尝试使用“logging.properties”文件配置 FileHandler。我有这条线:

handlers= java.util.logging.FileHandler
.level= INFO
java.util.logging.FileHandler.pattern = campaignStatusCXF%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
# Limit the message that are printed on the console to WARNING and above.
java.util.logging.ConsoleHandler.level = WARNING
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

但它不能单独工作。我不得不在代码中添加 FileHandler:

System.setProperty("java.util.logging.config.file", "/logging.properties"); LOG = Logger.getLogger(BulkEmailDownloader.class.getName());

try {
    FileHandler logFile;
    logFile = new FileHandler("campaignStatus.log");
    logFile.setFormatter(new SimpleFormatter());
    LOG.addHandler(logFile);
} catch (SecurityException e1) {            
} catch (IOException e2) {          
} 

这种方法的问题是 - 它只是一直重写日志。

我阅读了许多示例和答案,例如this,但找不到我正在寻找的答案。

【问题讨论】:

    标签: java logging


    【解决方案1】:

    问题是 LogManager 配置在您的代码执行之前运行。这意味着您必须执行以下操作之一:

    1. 在您的启动脚本中设置“java.util.logging.config.file”系统属性。
    2. 在代码中设置系统属性后调用LogManager.readConfiguration()
    3. 使用ClassLoader.getResourceAsStream(String)LogManager.readConfiguration(InputStream) 加载您的属性文件。

    另外,您的示例代码需要包含文件模式:

    new FileHandler("campaignStatus%g.log");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多