Hi Bengt,
It looks weird, but sounds like classloading change issue.
I gonna try to reproduce and keep you posted.
Regards
JB
On 06/28/2012 11:22 AM, Bengt Rodehav wrote:
I'm currently updating our applications from using Karaf 2.2.5 to Karaf
2.2.8 and have problems initializing the log system. I use
NTEventLogAppender in my org.ops4j.pax.logging.cfg, like this:
/log4j.appender.nteventlog=org.apache.log4j.nt.NTEventLogAppender/
/log4j.appender.nteventlog.source=${nteventlog.source}/
/log4j.appender.nteventlog.layout=org.apache.log4j.PatternLayout/
/log4j.appender.nteventlog.layout.ConversionPattern=Time:
%d{ISO8601}%n%nSeverity: %p%n%nThread: %t%n%n%m%n/
/log4j.appender.nteventlog.threshold=DEBUG/
It used to work fine but now I get this:
/2012-06-28 10:12:36,259 | ERROR | s4j.pax.logging) | configadmin
| ? ? | Unexpected
problem executing task/
/java.lang.NoClassDefFoundError: Could not initialize class
org.apache.log4j.nt.NTEventLogAppender/
/at java.lang.Class.forName0(Native Method)[:1.6.0_32]/
/at java.lang.Class.forName(Class.java:169)[:1.6.0_32]/
/at
org.apache.log4j.OsgiThrowableRenderer.findClass(OsgiThrowableRenderer.java:224)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.log4j.OsgiThrowableRenderer.formatElement(OsgiThrowableRenderer.java:134)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.log4j.OsgiThrowableRenderer.doRender(OsgiThrowableRenderer.java:105)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.log4j.OsgiThrowableRenderer.doRender(OsgiThrowableRenderer.java:52)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.log4j.spi.ThrowableInformation.getThrowableStrRep(ThrowableInformation.java:89)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.log4j.spi.LoggingEvent.getThrowableStrRep(LoggingEvent.java:413)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:313)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.log4j.WriterAppender.append(WriterAppender.java:162)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.log4j.Category.callAppenders(Category.java:193)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.log4j.Category.forcedLog(Category.java:365)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.log4j.Category.log(Category.java:772)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.ops4j.pax.logging.service.internal.PaxLoggerImpl.error(PaxLoggerImpl.java:159)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl.log(PaxLoggingServiceImpl.java:148)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl.access$000(PaxLoggingServiceImpl.java:45)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl$1ManagedPaxLoggingService.log(PaxLoggingServiceImpl.java:322)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]/
/at
org.apache.felix.cm.impl.ConfigurationManager.log(ConfigurationManager.java:915)[5:org.apache.felix.configadmin:1.2.8]/
/at
org.apache.felix.cm.impl.ConfigurationManager.handleCallBackError(ConfigurationManager.java:1028)[5:org.apache.felix.configadmin:1.2.8]/
/at
org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1495)[5:org.apache.felix.configadmin:1.2.8]/
/at
org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:104)[5:org.apache.felix.configadmin:1.2.8]/
/at java.lang.Thread.run(Thread.java:662)[:1.6.0_32]/
For some reason the class "org.apache.log4j.nt.NTEventLogAppender".
Looking at the stack trace it seems like the handling of the
configuration is done by the pax-logging-service which also has this
class in it's own bundle. The NTEventLogAppender.dll is also required
and is located in Karaf's "lib" directory (as it was in the past).
Can someone shed some light on this? I'm not sure if it's a Karaf or
Pax-logging issue (or simply a mistake I've made)?
/Bengt
--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com