Art*_*hur 2 osgi log4j classloader apache-felix
我使用了来自Maven repo的log4j-1.2.17软件包.我尝试在bundle中执行此代码(我的bundle调用log4j-1.2.17包)
PropertyConfigurator.configure(props());
private static Properties props() {
Properties props = new Properties();
props.put("log4j.rootLogger", "INFO, R");
props.put("log4j.appender.R",
"org.apache.log4j.DailyRollingFileAppender");
props.put("log4j.appender.R.File", "logs/IhtikaClient.log");
props.put("log4j.appender.R.Append", "true");
props.put("log4j.appender.R.Threshold", "INFO");
props.put("log4j.appender.R.DatePattern", "'.'yyyy-MM-dd");
props.put("log4j.appender.R.layout", "org.apache.log4j.PatternLayout");
props.put("log4j.appender.R.layout.ConversionPattern",
//"%d{HH:mm:ss,SSS} %c - %m%n");
//"[%5p] %d{yyyy-MM-dd mm:ss} (%F:%M:%L)%n%m%n%n");
"[%5p] %d{yyyy-MM-dd mm:ss} %c (%F:%M:%L)%n%m%n");
return props;
}
Run Code Online (Sandbox Code Playgroud)
但我有错误
log4j:ERROR A "org.apache.log4j.DailyRollingFileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
log4j:ERROR [org.apache.felix.framework.BundleWiringImpl@9da1dd] whereas object of type
log4j:ERROR "org.apache.log4j.DailyRollingFileAppender" was loaded by [sun.misc.Launcher$AppClassLoader@4b222f].
log4j:ERROR Could not instantiate appender named "R".
log4j:ERROR A "org.apache.log4j.DailyRollingFileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
log4j:ERROR [org.apache.felix.framework.BundleWiringImpl@9da1dd] whereas object of type
log4j:ERROR "org.apache.log4j.DailyRollingFileAppender" was loaded by [sun.misc.Launcher$AppClassLoader@4b222f].
log4j:ERROR Could not instantiate appender named "R".
Bundles已按顺序加载
.getBundleContext().installBundle("......../log4j-1.2.17.jar")
.getBundleContext().installBundle("......../I_MainForm-1.0-SNAPSHOT.jar")
Run Code Online (Sandbox Code Playgroud)
如何解决这个错误?拜托,对不起我的英语.最好的问候,亚瑟.
基本上,不要使用org.osgi.framework.system.packages或"泄漏"您的类到框架org.osgi.framework.system.packages.extra,除非您真的需要在代码中而不是修复其他一些问题.显然,它是log4j问题.
您可以通过设置系统属性来修复它:
-Dlog4j.ignoreTCL=true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8277 次 |
| 最近记录: |