logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Sicker <boa...@gmail.com>
Subject Re: Custom appender not identified in OSGi environment
Date Fri, 05 Feb 2016 15:54:35 GMT
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>

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