logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ralph Goers <ralph.go...@dslextreme.com>
Subject Re: Custom appender not identified in OSGi environment
Date Thu, 04 Feb 2016 18:42:25 GMT
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


Mime
View raw message