gpt4 book ai didi

Java记录器配置文件不生效

转载 作者:行者123 更新时间:2023-12-02 10:24:38 25 4
gpt4 key购买 nike

我有一个简单的java程序:

public class UseLog {
public static final Logger logger = Logger.getLogger("UseLog");
public static void main(String[] args) {
logger.info("my4");
}
}

还有一个“myConfig.txt”文件:

.level=WARNING
UseLog.level=WARNING

我用命令行编译并运行它:

java UseLog -Djava.util.logging.config.file=myConfig.txt

我预计它不会打印任何内容,但事实上:

Jan 05, 2019 10:46:13 下午 UseLog main
INFO: my4

看来我的配置文件对我的程序无效。我哪里出错了以及如何修复?

最佳答案

您的配置文件将被忽略,因为 JVM 属性未设置。

将 jvm arg 放在类名之前,主类名后面的所有内容都是程序参数,而不是 JVM 属性。

java -Djava.util.logging.config.file=myConfig.txt UseLog

如果我稍微改变一下你的程序:

package com.soquestion;
import java.util.logging.Logger;

public class Main {
public static final Logger log = Logger.getLogger("UseLog");

public static void main(String[] args) {
System.out.println("arg count: " + args.length);
log.info("hello from info");
log.warning("hello from warning");
}
}

在类名后输出-D:

$ java com.soquestion.Main -Djava.util.logging.config.file=myConfig.txt
arg count: 1
Jan 07, 2019 2:17:17 PM com.soquestion.Main main
INFO: hello from info
Jan 07, 2019 2:17:17 PM com.soquestion.Main main
WARNING: hello from warning

在类名前输出-D:

$ java -Djava.util.logging.config.file=myConfig.txt com.soquestion.Main
arg count: 0

在类名之前输出 -D,并在配置文件中定义处理程序:

handlers = java.util.logging.ConsoleHandler
UseLog.level = WARNING

结果:

$ java -Djava.util.logging.config.file=myConfig.txt com.soquestion.Main
arg count: 0
Jan 07, 2019 2:18:38 PM com.soquestion.Main main
WARNING: hello from warning

关于Java记录器配置文件不生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54067688/

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