gpt4 book ai didi

java - 我的logging.properties自定义格式化程序不起作用

转载 作者:行者123 更新时间:2023-12-01 21:58:13 25 4
gpt4 key购买 nike

我实际上正在向我的项目添加 java 日志记录(不能使用其他框架)。我在 .war 上构建我的应用程序,并通过 Weblogic 部署它,记录器正在使用我的logging.properties 配置,除了格式化程序,我不知道为什么应用程序忽略它。

这是我准备记录器的类(class);

public class CtgLogger {
private static final String LOAD_ERROR = "Properties could not be loaded.";

private static final Map<String, Level> LEVEL_MAP;
private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
static {

final InputStream inputStream = CtgLogger.class.getResourceAsStream("/logging.properties");
try {
LogManager.getLogManager().readConfiguration(inputStream);
} catch (Exception e) {
Logger.getAnonymousLogger().severe(LOAD_ERROR);
Logger.getAnonymousLogger().severe(e.getMessage());
}
// and I add the LEVEL_MAP to the logger...

这是我的属性(property)...

handlers = java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=logsfolder/CTGLOG_%g.log
java.util.logging.FileHandler.level=ALL
java.util.logging.FileHandler.limit=3000
java.util.logging.FileHandler.count=6
#java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
#If I use the SimpleFormatter, apps goes well with it format.
java.util.logging.FileHandler.formatter = com.package.my.log.JsonCustomFormatter
#If I use my custom formatter, the weblogic works with a XMLFormatter (default)

我知道 .properties 正在工作,因为记录器正在使用我设置的模式、限制和计数。

PD:如果我使用 JUnit 运行我的应用程序,日志会使用我的自定义格式化程序,但不会在 weblogic 上运行!不知道为什么!

最佳答案

Weblogic 将有多个类加载器。标准LogManager can only see classes loaded via the system class loader 。检查Server Log对于与找不到自定义类相关的错误。如果是这种情况,您必须将格式化程序移至系统类加载器。否则,您必须使用代码从在子类加载器中运行的 Web 应用程序安装格式化程序。

还有bugs in the LogManager.readConfiguration and alternative methods to use in JDK9 and later .

关于java - 我的logging.properties自定义格式化程序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58723798/

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