logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nipuni Piyabasi Perera <nipuni880...@gmail.com>
Subject Re: Custom appender not identified in OSGi environment
Date Mon, 08 Feb 2016 06:56:23 GMT
Hi Matt,

I have posted this on ops4j group discussion.[1]

[1] https://groups.google.com/forum/#!topic/ops4j/QvSOAmOrACg

Thanks,
Nipuni

On Fri, Feb 5, 2016 at 10:39 PM, Matt Sicker <boards@gmail.com> wrote:

> That sounds like a problem in pax-logging-log4j2 then. I wouldn't expect to
> have to do that. Could you file an issue for pax-logging?
>
> On 5 February 2016 at 10:44, Nipuni Piyabasi Perera <
> nipuni880917@gmail.com>
> wrote:
>
> > 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 <boards@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.goers@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 <
> > > > nipuni880917@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.goers@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.goers@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 <
> > > > >> nipuni880917@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
<
> > > > >>>> nipuni880917@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.popma@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 <
> > > > >> nipuni880917@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 <
> > > > >>>>>>> nipuni880917@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.goers@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 <
> > > > >>>>>>>>>> nipuni880917@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: nipuni@wso2.com
> > > > >>>>>>>>>> Git hub profile: https://github.com/nipuni
> > > > >>>>>>>>>> Blog : http://nipunipererablog.blogspot.com/
> > > > >>>>>>>>>> Mobile: +94 (71) 5626680
> > > > >>>>>>>>>
> > > > >>>>>>>>>
> > > > >>>>>>>>>
> > > > >>>>>>>>>
> > > > >>
> > ---------------------------------------------------------------------
> > > > >>>>>>>>> To unsubscribe, e-mail:
> > > > log4j-user-unsubscribe@logging.apache.org
> > > > >>>>>>>>> For additional commands, e-mail:
> > > > >> log4j-user-help@logging.apache.org
> > > > >>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>> --
> > > > >>>>>>>> Nipuni Perera
> > > > >>>>>>>> Software Engineer; WSO2 Inc.; http://wso2.com
> > > > >>>>>>>> Email: nipuni@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: nipuni@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: nipuni@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: nipuni@wso2.com
> > > > >>>> Git hub profile: https://github.com/nipuni
> > > > >>>> Blog : http://nipunipererablog.blogspot.com/
> > > > >>>> Mobile: +94 (71) 5626680
> > > > >>>
> > > > >>
> > > > >>
> > > > >>
> > > > >>
> > ---------------------------------------------------------------------
> > > > >> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
> > > > >> For additional commands, e-mail:
> log4j-user-help@logging.apache.org
> > > > >>
> > > > >>
> > > > >
> > > > >
> > > > > --
> > > > > Nipuni Perera
> > > > > Software Engineer; WSO2 Inc.; http://wso2.com
> > > > > Email: nipuni@wso2.com
> > > > > Git hub profile: https://github.com/nipuni
> > > > > Blog : http://nipunipererablog.blogspot.com/
> > > > > Mobile: +94 (71) 5626680
> > > >
> > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
> > > > For additional commands, e-mail: log4j-user-help@logging.apache.org
> > > >
> > > >
> > >
> > >
> > > --
> > > Matt Sicker <boards@gmail.com>
> > >
> >
> >
> >
> > --
> > Nipuni Perera
> > Software Engineer; WSO2 Inc.; http://wso2.com
> > Email: nipuni@wso2.com
> > Git hub profile: https://github.com/nipuni
> > Blog : http://nipunipererablog.blogspot.com/
> > Mobile: +94 (71) 5626680
> >
>
>
>
> --
> Matt Sicker <boards@gmail.com>
>



-- 
Nipuni Perera
Software Engineer; WSO2 Inc.; http://wso2.com
Email: nipuni@wso2.com
Git hub profile: https://github.com/nipuni
Blog : http://nipunipererablog.blogspot.com/
Mobile: +94 (71) 5626680

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message