9
votes

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.

2
UPDATE! I've found an alternative: EDIT an OSGI compliant version of log4j (get it from SPRING repository) with winrar, PASTE the log4j properties files to the ROOT of the JAR. Import the package in your plugin DEPENDENCIES, et voilá! Each approach has it's advantages. (Don't forget Eugener's IMPORTANT TIP, that makes it all work: All the bundles which use log4j should have org.apache.log4j in their Import-Package attribute)marcolopes

2 Answers

14
votes

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 their Import-Package attribute
1
votes

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