It turns out that in the latest vesion of log4j (1.2.17), two DLL's were included:
- NTEventLogAppender.dll - NTEventLogAppender.amd64.dll If I put both of them in Karaf's lib folder it seems to work in both Windows XP and Windows 7. I haven't seen any documentation regarding this but I'll try this for now. /Bengt 2012/6/28 Bengt Rodehav <[email protected]> > Just verified that our previous custom Karaf distribution (which is based > on Karaf 2.2.5) has the same problem on Windows 7. This is then clearly not > an issue with Karaf 2.2.8. > > Still worth solving though... > > /Bengt > > 2012/6/28 Jean-Baptiste Onofré <[email protected]> > >> Good point Bengt, you are certainly right. >> >> Regards >> JB >> >> >> On 06/28/2012 01:20 PM, Bengt Rodehav wrote: >> >>> Hello JB, >>> >>> Just struck me that I'v recently changed to a computer running Windows 7 >>> (used to run on Windows XP). When I install Karaf on Windows XP it works >>> but when I install the same distribution on Windows 7 it doesn't work. >>> My guess is that is has to do with the NTEventLogAppender.dll. Either it >>> does not support Windows 7 or it has to be located somewhere else than >>> in Karaf's lib folder. >>> >>> I would guess that if the loading of NTEventLogAppender.dll fails then >>> the loading of the class org.apache.log4j.nt.__**NTEventLogAppender will >>> >>> also fail - thus the NoClassDefFoundError. >>> >>> /Bengt >>> >>> 2012/6/28 Jean-Baptiste Onofré <[email protected] <mailto:[email protected] >>> >> >>> >>> >>> 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] <mailto:[email protected]> >>> >>> http://blog.nanthrax.net >>> Talend - http://www.talend.com >>> >>> >>> >>> >> -- >> Jean-Baptiste Onofré >> [email protected] >> http://blog.nanthrax.net >> Talend - http://www.talend.com >> >> >> >
