Java Logger:无法在 logger.properties 文件中设置日志级别

2024-04-04

我有一个使用maven 构建的java 项目。 我在用java.util.logging.Logger在我的项目中并想使用logger.properties文件(不是命令行)。

我创建了一个logger.properties像这样的文件:

handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level=WARNING

java.util.logging.SimpleFormatter.format=[%4$s] %5$s %n

java.util.logging.config.file="../../results/api.log"

以下是我遇到的问题:

  1. java.util.logging.SimpleFormatter.format工作中。当我在此处更改格式时,我会立即在项目中看到更改。所以我知道至少我正确地导入了文件。
  2. .level不管用。我尝试将其更改为info, finest, warning等等,但在我更改它之后,即使我告诉它不要显示 INFO,我仍然会看到所有 INFO 消息。
  3. java.util.logging.config.file不管用。我有点期望这个不起作用,因为它是一条相对路径。有人知道如何解析属性文件中的相对路径名吗?

Solution

我需要移动.level到顶部,像这样:

记录器属性

.level=WARNING

handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler

java.util.logging.SimpleFormatter.format=[%4$s] %5$s %n

然后,为了将结果保存到“api.log”,我在代码中执行了以下操作:

RequestHelper.java

import org.apache.commons.io.FilenameUtils;

public class RequestHelper {

    private static final Logger LOGGER = Logger.getLogger( RequestHelper.class.getName() );

    protected RequestHelper() {
        //SET LOGGER TO OUTPUT TO "../../results/api.log"
        //Logs will ALSO output to console.
        String result_file = getNormalizedAbsolutePath("../../results/api.log");
        Handler fh = new FileHandler(result_file);
        Logger.getLogger("").addHandler(fh);
    }

    public static String getNormalizedAbsolutePath(String fileName) {
        String path;
        File file = new File(fileName);
        try {
            path = file.getCanonicalPath();
        } catch (IOException e) {
            LOGGER.warning("Error while computing the canonical path of file: " + fileName);
            path = file.getAbsolutePath();
        }
        return FilenameUtils.normalize(path);
    }
}

只是一个猜测。从文档中:

假定名称以“.level”结尾的所有属性都定义记录器的日志级别。因此,“foo.level”为名为“foo”的记录器以及(递归地)命名层次结构中的任何子记录器定义了日志级别。日志级别按照属性文件中定义的顺序应用。因此,树中子节点的级别设置应位于其父节点的设置之后。

尝试设置.level首先,在定义任何处理程序之前。如果您先设置根记录器级别,则之后定义的记录器将继承根日志级别。

Also:

属性“配置”。此属性旨在允许运行任意配置代码。

java.util.logging.config.file是系统属性,在配置文件中不起作用。尝试仅使用“配置”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Logger:无法在 logger.properties 文件中设置日志级别 的相关文章

随机推荐