Hi all, This was a class loading issue in my OSGi environment. We were using pax-logging 1.8.4 (which exports log4j2 2.0.2) and the class loader cannot load the package (package read from the log4j2.xml configuration) as the new bundle is not visible to the pax-logging bundle.
Could resolve it after adding it as a fragment to pax-logging-log4j2 1.8.4 [1]. (This way new appender bundle becomes a fragment of pax-logging-log4j2 and visible to the class loader.) Sorry for the noise. Thanks all for the replies. [1] <Fragment-Host>org.ops4j.pax.logging.pax-logging-log4j2</Fragment-Host> Thanks, Nipuni On Fri, Feb 5, 2016 at 9:24 PM, Matt Sicker <boa...@gmail.com> wrote: > This sounds like it's probably a bug. Could you file an issue in jira? > > On 4 February 2016 at 12:42, Ralph Goers <ralph.go...@dslextreme.com> > wrote: > > > I don’t think so. I suspect that > > org.apache.logging.log4j.core.osgi.Activator.java is not finding your > > plugin but I am not sure why. > > > > Ralph > > > > > On Feb 4, 2016, at 11:38 AM, Nipuni Piyabasi Perera < > > nipuni880...@gmail.com> wrote: > > > > > > Thanks for the input. > > > > > > Yes the issue may be different than what I have mentioned. I suspected > > that > > > the issue is related to Log4j2Plugins.dat file as the appender is > working > > > fine in non-OSGi environment, and the only different I could find was > > > that Log4j2Plugins.dat > > > file comparing the two jars. May be I am missing some plugin that I > need > > > to add in pom.xml. > > > > > > Thanks, > > > Nipuni > > > > > > On Fri, Feb 5, 2016 at 12:00 AM, Ralph Goers < > ralph.go...@dslextreme.com > > > > > > wrote: > > > > > >> Actually, I just looked at the code and there is a class that should > be > > >> looking at your bundle to locate any plugins you may have. I am > actually > > >> not very familiar with that code so I wonder if one of the other > > committers > > >> could provide insight on what might be causing it not to work. > > >> > > >> Ralph > > >> > > >>> On Feb 4, 2016, at 11:06 AM, Ralph Goers <ralph.go...@dslextreme.com > > > > >> wrote: > > >>> > > >>> I don’t believe that issue is related to your problem. > > >>> > > >>> When Log4j loads plugins it can only find plugins on whatever class > > path > > >> it has available to it. If it is in a different OSGi bundle than your > > >> plugin it may not see it. In short, Log4j has to be able to find > > >> > META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat > > for > > >> Log4j and the same file for your plugin. Log4j’s file is embedded in > the > > >> log4j-core jar. Yours will be in whatever jar you are producing. There > > is a > > >> process for “shading” your code with Log4j’s that will cause them to > be > > >> combined, but I am afraid I don’t know exactly where that is > > documented. If > > >> you want your stuff in a separate bundle from Log4j’s then you need to > > >> figure out how to get the stuff in your bundle on Log4j’s classpath. > > >>> > > >>> Ralph > > >>> > > >>>> On Feb 4, 2016, at 10:39 AM, Nipuni Piyabasi Perera < > > >> nipuni880...@gmail.com> wrote: > > >>>> > > >>>> Hi all, > > >>>> > > >>>> Above mentioned issue is reported and fixed in[1]. I have tried to > use > > >>>> log4j2- 2.0.1 (as this is the fix version of the jira) in my OSGi > > >>>> environment. But I still see the same CLASS_NOT_FOUND error while it > > >> works > > >>>> fine in non-OSGi environment. > > >>>> > > >>>> [1] https://issues.apache.org/jira/browse/LOG4J2-741 > > >>>> > > >>>> Thanks, > > >>>> Nipuni > > >>>> > > >>>> On Thu, Feb 4, 2016 at 9:24 AM, Nipuni Piyabasi Perera < > > >>>> nipuni880...@gmail.com> wrote: > > >>>> > > >>>>> Hi, > > >>>>> > > >>>>> Thank you very much for the reply. > > >>>>> > > >>>>> Initially I got error [1] when I am trying to test the appender in > > >>>>> non-OSGi environment. This was due to not passing the correct > number > > of > > >>>>> parameters to the factory method. I have updated my log4j2.xml and > > then > > >>>>> could solve the issue[1] in non-OSGi env. I have applied the same > > >>>>> configuration to OSGi environment as well. > > >>>>> > > >>>>> Now I am seeing error[2],which seems to be a class loading issue as > > you > > >>>>> have mentioned. I did added the plugin processor in my pom.xml but > > >> still > > >>>>> seeing the same issue. While comparing the OSGi bundle and the > > >> non-OSGi jar > > >>>>> I could see that the Log4j2Plugins.dat file is missing in the OSGi > > >> bundle. I > > >>>>> have added the package name to configuration element as well. (as > per > > >> the > > >>>>> pom.xml [3] I am using log4j2 2.5) > > >>>>> > > >>>>> [1] Unable to invoke factory method in class ... > > >>>>> [2] ERROR Error processing element HTTPSocket: CLASS_NOT_FOUND > > >>>>> [3] Adding the plugin section of my pom.xml > > >>>>> > > >>>>> <plugins> > > >>>>> <plugin> > > >>>>> <groupId>org.apache.felix</groupId> > > >>>>> <artifactId>maven-scr-plugin</artifactId> > > >>>>> <version>1.9.0</version> > > >>>>> <executions> > > >>>>> <execution> > > >>>>> <id>generate-scr-scrdescriptor</id> > > >>>>> <goals> > > >>>>> <goal>scr</goal> > > >>>>> </goals> > > >>>>> </execution> > > >>>>> </executions> > > >>>>> </plugin> > > >>>>> <plugin> > > >>>>> <groupId>org.apache.maven.plugins</groupId> > > >>>>> <artifactId>maven-compiler-plugin</artifactId> > > >>>>> <version>3.1</version> > > >>>>> <executions> > > >>>>> <execution> > > >>>>> <id>log4j-plugin-processor</id> > > >>>>> <goals> > > >>>>> <goal>compile</goal> > > >>>>> </goals> > > >>>>> <phase>process-classes</phase> > > >>>>> <configuration> > > >>>>> <proc>only</proc> > > >>>>> <annotationProcessors> > > >>>>> > > >> > > > <annotationProcessor>org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor</annotationProcessor> > > >>>>> </annotationProcessors> > > >>>>> </configuration> > > >>>>> </execution> > > >>>>> </executions> > > >>>>> </plugin> > > >>>>> <plugin> > > >>>>> <groupId>org.apache.felix</groupId> > > >>>>> <artifactId>maven-bundle-plugin</artifactId> > > >>>>> <extensions>true</extensions> > > >>>>> <configuration> > > >>>>> <instructions> > > >>>>> <Bundle-Vendor>Nipuni</Bundle-Vendor> > > >>>>> > > >> > > > <Bundle-SymbolicName>org.my.custom.http.socket.appender</Bundle-SymbolicName> > > >>>>> > > >> <Bundle-Name>org.my.custom.http.socket.appender</Bundle-Name> > > >>>>> <Bundle-Version>1.0.0</Bundle-Version> > > >>>>> <Import-Package> > > >>>>> org.apache.log4j.*;version="[2.5.0,3.0.0)" > > >>>>> </Import-Package> > > >>>>> <Export-Package> > > >>>>> > org.my.custom.http.socket.appender.*;version="1.0.0" > > >>>>> </Export-Package> > > >>>>> <DynamicImport-Package>*</DynamicImport-Package> > > >>>>> </instructions> > > >>>>> </configuration> > > >>>>> </plugin> > > >>>>> > > >>>>> </plugins> > > >>>>> > > >>>>> > > >>>>> Thanks, > > >>>>> Nipuni > > >>>>> > > >>>>> On Thu, Feb 4, 2016 at 4:31 AM, Remko Popma <remko.po...@gmail.com > > > > >> wrote: > > >>>>> > > >>>>>> Thanks for confirming that. > > >>>>>> > > >>>>>> You may avoid the classloader issues by combining the log4j jars > and > > >> your > > >>>>>> custom appender in a single jar. > > >>>>>> > > >>>>>> The only tricky part here is that you'd need to combine the > > serialized > > >>>>>> plugin listing files (see > > >>>>>> http://logging.apache.org/log4j/2.x/manual/plugins.html) from the > > >>>>>> various log4j jars into a single serialized plugin listing file in > > >> your > > >>>>>> superjar. > > >>>>>> > > >>>>>> See the source code for PluginProcessor for more details. > > >>>>>> > > >> > > > https://logging.apache.org/log4j/2.x/log4j-core/xref/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.html > > >>>>>> > > >>>>>> Sent from my iPhone > > >>>>>> > > >>>>>>> On 2016/02/03, at 23:54, Nipuni Piyabasi Perera < > > >> nipuni880...@gmail.com> > > >>>>>> wrote: > > >>>>>>> > > >>>>>>> Hi all, > > >>>>>>> > > >>>>>>> As I have mentioned in my first mail, the issue is only in the > OSGi > > >>>>>>> environment it seems. I had mistakenly added the appender as a > OSGi > > >>>>>> bundle > > >>>>>>> in the non-OSGi environment. Could resolve the issue after > changing > > >> the > > >>>>>>> package to a jar. > > >>>>>>> > > >>>>>>> Thanks, > > >>>>>>> Nipuni > > >>>>>>> > > >>>>>>> On Wed, Feb 3, 2016 at 7:41 PM, Nipuni Piyabasi Perera < > > >>>>>>> nipuni880...@gmail.com> wrote: > > >>>>>>> > > >>>>>>>> Thanks for the prompt reply. > > >>>>>>>> > > >>>>>>>> I have first tried my custom appender in OSGi environment which > > gave > > >>>>>> the > > >>>>>>>> errors above. But I am getting the same issue in non-OSGi > > >> environment > > >>>>>> too. > > >>>>>>>> It seems an issue with custom appender. > > >>>>>>>> AFAIK It is plugin annotation that make the appender visible to > > >>>>>> log4j2. I > > >>>>>>>> can't find any issue in my log4j2.xml and plugin configuration > of > > >> the > > >>>>>>>> class. Is there any other places that I need to care about? > > >>>>>>>> > > >>>>>>>> Thanks, > > >>>>>>>> Nipuni > > >>>>>>>> > > >>>>>>>> On Wed, Feb 3, 2016 at 7:28 PM, Ralph Goers < > > >>>>>> ralph.go...@dslextreme.com> > > >>>>>>>> wrote: > > >>>>>>>> > > >>>>>>>>> OSGi does interesting things with ClassLoaders. Log4j has to be > > >> able > > >>>>>> to > > >>>>>>>>> access your plugin when it is configuring. If it isn’t in an > > >>>>>> accessible > > >>>>>>>>> ClassLoader it won’t see it. There have been a few people who > > are > > >>>>>> using > > >>>>>>>>> Log4j in an OSGi environment that have helped out with patches > > from > > >>>>>> time to > > >>>>>>>>> time. Perhaps one of them can help out? > > >>>>>>>>> > > >>>>>>>>> Ralph > > >>>>>>>>> > > >>>>>>>>>>> On Feb 3, 2016, at 6:07 AM, Nipuni Piyabasi Perera < > > >>>>>>>>>> nipuni880...@gmail.com> wrote: > > >>>>>>>>>> > > >>>>>>>>>> Hi, > > >>>>>>>>>> > > >>>>>>>>>> I have written a custom appender extending the log4j2 > > >>>>>> AbstractAppender. > > >>>>>>>>> But > > >>>>>>>>>> I am getting a runtime error[1]. I have added the plugin > > >>>>>> annotation[2] > > >>>>>>>>> as > > >>>>>>>>>> per the manual and the custom appender class contains factory > > >> method > > >>>>>>>>>> createAppender() as well. I also have added the package name > to > > >>>>>>>>>> configuration element. > > >>>>>>>>>> What am I missing here? Appreciate any input on this. > > >>>>>>>>>> > > >>>>>>>>>> I have my log4j2.xml file as below: > > >>>>>>>>>> > > >>>>>>>>>> <Configuration packages="org.my.custom.http.socket.appender"> > > >>>>>>>>>> <Appenders> > > >>>>>>>>>> ... > > >>>>>>>>>> <Socket name="socket" host="localhost" port="4714"> > > >>>>>>>>>> <!--PatternLayout pattern="[%d] %5p {%c} - %m%ex%n"/--> > > >>>>>>>>>> </Socket> > > >>>>>>>>>> <HTTPSocket name="HTTP_APPENDER" host="localhost" > > port="8888"> > > >>>>>>>>>> <------------------------------------- > > >>>>>>>>>> New Appender > > >>>>>>>>>> </HTTPSocket> > > >>>>>>>>>> </Appenders> > > >>>>>>>>>> <Loggers> > > >>>>>>>>>> <Root level="info" includeLocation="true"> > > >>>>>>>>>> ... > > >>>>>>>>>> <AppenderRef ref="HTTP_APPENDER"/> > > >>>>>>>>>> </Root> > > >>>>>>>>>> <Logger name="my.custom.deployer" level="info" > > >>>>>> additivity="true"> > > >>>>>>>>>> <AppenderRef ref="socket"/> > > >>>>>>>>>> </Logger> > > >>>>>>>>>> </Loggers> > > >>>>>>>>>> </Configuration> > > >>>>>>>>>> > > >>>>>>>>>> > > >>>>>>>>>> [1] ERROR Appenders contains an invalid element or attribute > > >>>>>>>>> "HTTPSocket" > > >>>>>>>>>> [2] @Plugin(name = "HTTPSocket", category = "Core", > elementType > > = > > >>>>>>>>> "appender", > > >>>>>>>>>> printObject = true) > > >>>>>>>>>> > > >>>>>>>>>> Thanks, > > >>>>>>>>>> Nipuni > > >>>>>>>>>> > > >>>>>>>>>> -- > > >>>>>>>>>> Nipuni Perera > > >>>>>>>>>> Software Engineer; WSO2 Inc.; http://wso2.com > > >>>>>>>>>> Email: nip...@wso2.com > > >>>>>>>>>> Git hub profile: https://github.com/nipuni > > >>>>>>>>>> Blog : http://nipunipererablog.blogspot.com/ > > >>>>>>>>>> Mobile: +94 (71) 5626680 > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> > > >> --------------------------------------------------------------------- > > >>>>>>>>> To unsubscribe, e-mail: > > log4j-user-unsubscr...@logging.apache.org > > >>>>>>>>> For additional commands, e-mail: > > >> log4j-user-h...@logging.apache.org > > >>>>>>>> > > >>>>>>>> > > >>>>>>>> -- > > >>>>>>>> Nipuni Perera > > >>>>>>>> Software Engineer; WSO2 Inc.; http://wso2.com > > >>>>>>>> Email: nip...@wso2.com > > >>>>>>>> Git hub profile: https://github.com/nipuni > > >>>>>>>> Blog : http://nipunipererablog.blogspot.com/ > > >>>>>>>> Mobile: +94 (71) 5626680 > > >>>>>>> > > >>>>>>> > > >>>>>>> > > >>>>>>> -- > > >>>>>>> Nipuni Perera > > >>>>>>> Software Engineer; WSO2 Inc.; http://wso2.com > > >>>>>>> Email: nip...@wso2.com > > >>>>>>> Git hub profile: https://github.com/nipuni > > >>>>>>> Blog : http://nipunipererablog.blogspot.com/ > > >>>>>>> Mobile: +94 (71) 5626680 > > >>>>>> > > >>>>> > > >>>>> > > >>>>> > > >>>>> -- > > >>>>> Nipuni Perera > > >>>>> Software Engineer; WSO2 Inc.; http://wso2.com > > >>>>> Email: nip...@wso2.com > > >>>>> Git hub profile: https://github.com/nipuni > > >>>>> Blog : http://nipunipererablog.blogspot.com/ > > >>>>> Mobile: +94 (71) 5626680 > > >>>>> > > >>>> > > >>>> > > >>>> > > >>>> -- > > >>>> Nipuni Perera > > >>>> Software Engineer; WSO2 Inc.; http://wso2.com > > >>>> Email: nip...@wso2.com > > >>>> Git hub profile: https://github.com/nipuni > > >>>> Blog : http://nipunipererablog.blogspot.com/ > > >>>> Mobile: +94 (71) 5626680 > > >>> > > >> > > >> > > >> > > >> --------------------------------------------------------------------- > > >> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > > >> For additional commands, e-mail: log4j-user-h...@logging.apache.org > > >> > > >> > > > > > > > > > -- > > > Nipuni Perera > > > Software Engineer; WSO2 Inc.; http://wso2.com > > > Email: nip...@wso2.com > > > Git hub profile: https://github.com/nipuni > > > Blog : http://nipunipererablog.blogspot.com/ > > > Mobile: +94 (71) 5626680 > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > > For additional commands, e-mail: log4j-user-h...@logging.apache.org > > > > > > > -- > Matt Sicker <boa...@gmail.com> > -- Nipuni Perera Software Engineer; WSO2 Inc.; http://wso2.com Email: nip...@wso2.com Git hub profile: https://github.com/nipuni Blog : http://nipunipererablog.blogspot.com/ Mobile: +94 (71) 5626680