gpt4 book ai didi

java - log4j:找不到根记录器信息。这个可以吗?

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

从 Eclipse 插件中加载 log4j 时(在强制编程模式下),它表示无法找到根记录器信息,但它却显示了。

SSCCE 代码如下。它基于最简单的可用 headless RCP 应用程序示例:

package try_eclipsepluginlog4j_01;

import java.io.IOException;
import java.net.URL;

import org.apache.log4j.PropertyConfigurator;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Platform;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
import org.osgi.framework.Bundle;


/**
* This class controls all aspects of the application's execution
*/
public class Application implements IApplication {

static
{
try {
Bundle bundle = Platform.getBundle("Try_EclipsePluginLog4j_01");
URL config1 = bundle.getEntry("/conf/log4j.sample.xml");
URL config2 = FileLocator.resolve(config1);
PropertyConfigurator.configure(config2);

org.apache.log4j.Logger log4j = org.apache.log4j.Logger.getLogger(Application.class);

log4j.info("log4j is here");
}
catch(IOException e) {
}
}

// private static final Logger log = Logger.getLogger(Application.class);

/* (non-Javadoc)
* @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
*/
public Object start(IApplicationContext context) throws Exception {
System.out.println("Hello RCP World!");
return IApplication.EXIT_OK;
}

/* (non-Javadoc)
* @see org.eclipse.equinox.app.IApplication#stop()
*/
public void stop() {
// nothing to do
}
}

配置文件如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
</layout>
</appender>

<root>
<priority value ="debug" />
<appender-ref ref="console" />
</root>

</log4j:configuration>

输出如下:

log4j: Trying to find [log4j.xml] using context classloader org.eclipse.core.runtime.internal.adaptor.ContextFinder@58242ff4.
log4j: Trying to find [log4j.xml] using org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@547248ad[Try_EclipsePluginLog4j_01:1.0.0.qualifier(id=13)] class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader org.eclipse.core.runtime.internal.adaptor.ContextFinder@58242ff4.
log4j: Trying to find [log4j.properties] using org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@547248ad[Try_EclipsePluginLog4j_01:1.0.0.qualifier(id=13)] class loader.
log4j: Trying to find [log4j.properties] using ClassLoader.getSystemResource().
log4j: Could not find resource: [null].
log4j: Reading configuration from URL file:/D:/Users/Dims/Design/eclipse-rcp-kepler/Try_EclipsePluginLog4j_01/conf/log4j.sample.xml
log4j: Could not find root logger information. Is this OK?
log4j: Finished configuring.
log4j:WARN No appenders could be found for logger (try_eclipsepluginlog4j_01.Application).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Hello RCP World!

项目结构如下:

enter image description here

最佳答案

由于您使用的是 XML 文件而不是属性文件,因此请尝试使用 DOMConfigurator 而不是 PropertyConfigurator

DOMConfigurator.configure(config2);

关于java - log4j:找不到根记录器信息。这个可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21562408/

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