Log4j under OSGI (Eclipse RCP)
Solution 1
You simply have to create log4j fragment bundle with the log4j.properties file inside.
UPDATE: Some things to look for:
- Header name should be:
Fragment-Host: log4j
. - log4j.properties should be in the src folder.
- All the bundles which use log4j should have
org.apache.log4j
in theirImport-Package
attribute
Solution 2
For logging in OSGi, you should take a look at OSGi Log Service. Here is article that explains quite well a good approach: http://blog.kornr.net/index.php/2008/12/18/osgi-logging-putting-it-all-together
You can also take a look at Pax-Logging: http://wiki.ops4j.org/display/paxlogging/Pax+Logging
Related videos on Youtube
marcolopes
Updated on May 22, 2022Comments
-
marcolopes about 2 years
After many tests i concluded that the Log4j is not working under OSGI.
I do not use Log4j directly, but i need third party plugins to log with it.
I made a plain JAVA project and everything works great, but under PLUGIN development nothing works.
I have log4j jar in my Classpath and even tried a Spring repository OSGI compliant Log4j and included it under Dependencies. Nothing works.
I've tried this some approach with no success: http://swik.net/Eclipse/Planet+Eclipse/Raja+Kannappan:+Eclipse+RCP+-+Converting+Dependencies+to+OSGi+Bundles/drqpf
and could not fully understand this one: http://www.eclipsezone.com/eclipse/forums/t99588.html
Can anyone point me on the right direction?
Thanks.
-
marcolopes over 13 yearsDid that. Fragment with log4j jar in the classpath and log4j properties on the fragment root. Imported fragment to main APP product. No success...
-
marcolopes over 13 yearsThe purpose is not to create a log service, but for a third-party plugin to log...
-
RaduK over 13 yearsMake sure you have the bundle log4j ACTIVE in your OSGi platform. (having it in the classpath is not enough) Then you can use the fragment approach for properties file if you want.
-
marcolopes over 13 yearsDatanucleus Plugin does not have org.apache.log4j in the "Import-Package"... also, i cannot set the "Fragment-Host" to "log4j" because i need to specify the "HOST-Plugin" (and i cannot change the name of my main project!)
-
marcolopes over 13 yearsYES, YES, YES! One year looking after this solution! Thanks a lot! Your tips were just right. I had to edit all the MANIFEST plugins and add "org.apache.log4j" to the Import-Package Section (winrar did a nice job saving the manifest into the JAR). The fragment header is related to the Host Plugin, and it works nicely! Thanks again!
-
Eugene Ryzhikov over 13 yearshard to say... possibly duplicate configuration, but not sure
-
marcolopes over 13 yearsFound the problem: "additivity" property must be set (to false) or logs will be "added" to "parent" category.