You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by Sam Hendley <sh...@greenenergycorp.com> on 2011/07/19 01:01:03 UTC

Using Log4j mail appender in Karaf with pax logging

Is it possible to use the log4j email appenders in karaf?

I have been googling for a few hours and I have seen a number of partial
answers but nothing definative one way or the other.

Here is my SMTP appender configuration in org.ops4j.pax.logging.cfg

log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.SMTPHost=xxxxx
log4j.appender.MAIL.From=xxxxxx
log4j.appender.MAIL.to=xxxxx
log4j.appender.MAIL.Subject=Error Alert
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n

and the exception I get:

Jul 18, 2011 6:43:50 PM org.apache.karaf.main.SimpleFileLock lock
INFO: locking
18 Jul 2011 18:43:50,484 ERROR [CM Configuration Updater (ManagedService
Update: pid=org.ops4j.pax.logging)] org.apache.felix.configadmin (?:   ?)
[org.osgi.service.log.LogService, org.knopflerfish.service.log.LogService,
org.ops4j.pax.logging.PaxLoggingService, org.osgi.service.cm.ManagedService,
id=8, bundle=4]: Unexpected problem updating Configuration
PID=org.ops4j.pax.logging, factoryPID=null,
bundleLocation=mvn:org.ops4j.pax.logging/pax-logging-service/1.6.3-LOCATION
java.lang.NoClassDefFoundError: javax/mail/MessagingException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.log4j.helpers.Loader.loadClass(Loader.java:198)
at
org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:326)
at
org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:123)
at
org.apache.log4j.PaxLoggingConfigurator.parseAppender(PaxLoggingConfigurator.java:81)
at
org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:735)
at
org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:615)
at
org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:502)
at
org.apache.log4j.PaxLoggingConfigurator.doConfigure(PaxLoggingConfigurator.java:57)
at
org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl.updated(PaxLoggingServiceImpl.java:187)
at
org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl$1ManagedPaxLoggingService.updated(PaxLoggingServiceImpl.java:321)
at
org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.run(ConfigurationManager.java:1160)
at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:104)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException
not found by org.ops4j.pax.logging.pax-logging-service [4]
at
org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:787)
at org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:71)
at
org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1768)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 15 more

This seems to indicate that the log4j SMTPAppender class is being found
correctly but then it cannot resolve the javax.mail package.

What is the best way to get the javax.mail package available to the pax
logging bundle? I found a number of postings that indicated this requires an
update to the jre or config properties file but I hesitate to start randomly
changing things I dont understand.

Thanks!

Sam Hendley

PS: The following are the pages I found that seem to relate to this topic:

Eclispe specific way of adding javax.mail
http://forums.pragprog.com/forums/103/topics/3736

General javax.mail in OSGi writeup
http://thecarlhall.wordpress.com/2009/10/27/javamail-in-osgi/

Using javax.mail in OSGi from camel list
http://camel.465427.n5.nabble.com/new-wiki-page-notes-on-mail-and-osgi-td4557069.html

Re: Using Log4j mail appender in Karaf with pax logging

Posted by Sam Hendley <sh...@greenenergycorp.com>.
Thanks guys, I was able to get emails working with pax-logging and karaf.

I tried exporting the javax.mail packages in jre.properties as suggested by
Mike but I was getting the same error. I tried Jean's suggestion of loading
the osgi packaged version of javax.mail and that worked, log4j would
correctly start.

However when it tried to actually send an email I got errors like:
javax.activation.UnsupportedDataTypeException: no object DCH for MIME type
multipart/mixed;

This was due to the javax.activation package exposed by the jre not working.
Servicemix has created an OSGI friendly version of this package. I had to
comment out the javax.activation export from jre.properties and load the
following feature:

<feature name="javax-mail-in-osgi">
  <bundle>mvn:javax.mail/mail/1.4.3</bundle>

<bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.1/1.7.0</bundle>
</feature>

Thanks for the quick response! I was close to the solution but could have
easily burnt half a day trying different permutations.

Sam

On Tue, Jul 19, 2011 at 1:47 AM, Jean-Baptiste Onofré <jb...@nanthrax.net>wrote:

> Hi,
>
> You have to install javax.mail bundle. This bundle is part of the jetty
> feature or you can install by hand:
>
> osgi:install mvn:javax.mail/mail/1.4.3
>
> Regards
> JB
>
>
> On 07/19/2011 01:01 AM, Sam Hendley wrote:
>
>> Is it possible to use the log4j email appenders in karaf?
>>
>> I have been googling for a few hours and I have seen a number of partial
>> answers but nothing definative one way or the other.
>>
>> Here is my SMTP appender configuration in org.ops4j.pax.logging.cfg
>>
>> log4j.appender.MAIL=org.**apache.log4j.net.SMTPAppender
>> log4j.appender.MAIL.**BufferSize=10
>> log4j.appender.MAIL.SMTPHost=**xxxxx
>> log4j.appender.MAIL.From=**xxxxxx
>> log4j.appender.MAIL.to <http://log4j.appender.MAIL.to**>=xxxxx
>>
>> log4j.appender.MAIL.Subject=**Error Alert
>> log4j.appender.MAIL.layout=**org.apache.log4j.PatternLayout
>> log4j.appender.MAIL.layout.**ConversionPattern=%d [%t] %-5p %c %x - %m%n
>>
>> and the exception I get:
>>
>> Jul 18, 2011 6:43:50 PM org.apache.karaf.main.**SimpleFileLock lock
>> INFO: locking
>> 18 Jul 2011 18:43:50,484 ERROR [CM Configuration Updater (ManagedService
>> Update: pid=org.ops4j.pax.logging)] org.apache.felix.configadmin (?:
>> ?) [org.osgi.service.log.**LogService,
>> org.knopflerfish.service.log.**LogService,
>> org.ops4j.pax.logging.**PaxLoggingService,
>> org.osgi.service.cm.**ManagedService, id=8, bundle=4]: Unexpected problem
>> updating Configuration PID=org.ops4j.pax.logging, factoryPID=null,
>> bundleLocation=mvn:org.ops4j.**pax.logging/pax-logging-**
>> service/1.6.3-LOCATION
>> java.lang.**NoClassDefFoundError: javax/mail/MessagingException
>> at java.lang.Class.forName0(**Native Method)
>> at java.lang.Class.forName(Class.**java:169)
>> at org.apache.log4j.helpers.**Loader.loadClass(Loader.java:**198)
>> at
>> org.apache.log4j.helpers.**OptionConverter.**instantiateByClassName(**
>> OptionConverter.java:326)
>> at
>> org.apache.log4j.helpers.**OptionConverter.**instantiateByKey(**
>> OptionConverter.java:123)
>> at
>> org.apache.log4j.**PaxLoggingConfigurator.**parseAppender(**
>> PaxLoggingConfigurator.java:**81)
>> at
>> org.apache.log4j.**PropertyConfigurator.**parseCategory(**
>> PropertyConfigurator.java:735)
>> at
>> org.apache.log4j.**PropertyConfigurator.**configureRootCategory(**
>> PropertyConfigurator.java:615)
>> at
>> org.apache.log4j.**PropertyConfigurator.**doConfigure(**
>> PropertyConfigurator.java:502)
>> at
>> org.apache.log4j.**PaxLoggingConfigurator.**doConfigure(**
>> PaxLoggingConfigurator.java:**57)
>> at
>> org.ops4j.pax.logging.service.**internal.**PaxLoggingServiceImpl.updated(
>> **PaxLoggingServiceImpl.java:**187)
>> at
>> org.ops4j.pax.logging.service.**internal.**PaxLoggingServiceImpl$**
>> 1ManagedPaxLoggingService.**updated(PaxLoggingServiceImpl.**java:321)
>> at
>> org.apache.felix.cm.impl.**ConfigurationManager$**
>> ManagedServiceUpdate.run(**ConfigurationManager.java:**1160)
>> at org.apache.felix.cm.impl.**UpdateThread.run(UpdateThread.**java:104)
>> at java.lang.Thread.run(Thread.**java:619)
>> Caused by: java.lang.**ClassNotFoundException:
>> javax.mail.MessagingException not found by
>> org.ops4j.pax.logging.pax-**logging-service [4]
>> at
>> org.apache.felix.framework.**ModuleImpl.**findClassOrResourceByDelegatio*
>> *n(ModuleImpl.java:787)
>> at org.apache.felix.framework.**ModuleImpl.access$400(**
>> ModuleImpl.java:71)
>> at
>> org.apache.felix.framework.**ModuleImpl$ModuleClassLoader.**
>> loadClass(ModuleImpl.java:**1768)
>> at java.lang.ClassLoader.**loadClass(ClassLoader.java:**252)
>> at java.lang.ClassLoader.**loadClassInternal(ClassLoader.**java:320)
>> ... 15 more
>>
>> This seems to indicate that the log4j SMTPAppender class is being found
>> correctly but then it cannot resolve the javax.mail package.
>>
>> What is the best way to get the javax.mail package available to the pax
>> logging bundle? I found a number of postings that indicated this
>> requires an update to the jre or config properties file but I hesitate
>> to start randomly changing things I dont understand.
>>
>> Thanks!
>>
>> Sam Hendley
>>
>> PS: The following are the pages I found that seem to relate to this topic:
>>
>> Eclispe specific way of adding javax.mail
>> http://forums.pragprog.com/**forums/103/topics/3736<http://forums.pragprog.com/forums/103/topics/3736>
>>
>> General javax.mail in OSGi writeup
>> http://thecarlhall.wordpress.**com/2009/10/27/javamail-in-**osgi/<http://thecarlhall.wordpress.com/2009/10/27/javamail-in-osgi/>
>>
>> Using javax.mail in OSGi from camel list
>> http://camel.465427.n5.nabble.**com/new-wiki-page-notes-on-**
>> mail-and-osgi-td4557069.html<http://camel.465427.n5.nabble.com/new-wiki-page-notes-on-mail-and-osgi-td4557069.html>
>>
>>
>>
> --
> Jean-Baptiste Onofré
> jbonofre@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>

Re: Using Log4j mail appender in Karaf with pax logging

Posted by Jean-Baptiste Onofré <jb...@nanthrax.net>.
Hi,

You have to install javax.mail bundle. This bundle is part of the jetty 
feature or you can install by hand:

osgi:install mvn:javax.mail/mail/1.4.3

Regards
JB

On 07/19/2011 01:01 AM, Sam Hendley wrote:
> Is it possible to use the log4j email appenders in karaf?
>
> I have been googling for a few hours and I have seen a number of partial
> answers but nothing definative one way or the other.
>
> Here is my SMTP appender configuration in org.ops4j.pax.logging.cfg
>
> log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
> log4j.appender.MAIL.BufferSize=10
> log4j.appender.MAIL.SMTPHost=xxxxx
> log4j.appender.MAIL.From=xxxxxx
> log4j.appender.MAIL.to <http://log4j.appender.MAIL.to>=xxxxx
> log4j.appender.MAIL.Subject=Error Alert
> log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
> log4j.appender.MAIL.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
>
> and the exception I get:
>
> Jul 18, 2011 6:43:50 PM org.apache.karaf.main.SimpleFileLock lock
> INFO: locking
> 18 Jul 2011 18:43:50,484 ERROR [CM Configuration Updater (ManagedService
> Update: pid=org.ops4j.pax.logging)] org.apache.felix.configadmin (?:
> ?) [org.osgi.service.log.LogService,
> org.knopflerfish.service.log.LogService,
> org.ops4j.pax.logging.PaxLoggingService,
> org.osgi.service.cm.ManagedService, id=8, bundle=4]: Unexpected problem
> updating Configuration PID=org.ops4j.pax.logging, factoryPID=null,
> bundleLocation=mvn:org.ops4j.pax.logging/pax-logging-service/1.6.3-LOCATION
> java.lang.NoClassDefFoundError: javax/mail/MessagingException
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:169)
> at org.apache.log4j.helpers.Loader.loadClass(Loader.java:198)
> at
> org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:326)
> at
> org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:123)
> at
> org.apache.log4j.PaxLoggingConfigurator.parseAppender(PaxLoggingConfigurator.java:81)
> at
> org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:735)
> at
> org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:615)
> at
> org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:502)
> at
> org.apache.log4j.PaxLoggingConfigurator.doConfigure(PaxLoggingConfigurator.java:57)
> at
> org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl.updated(PaxLoggingServiceImpl.java:187)
> at
> org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl$1ManagedPaxLoggingService.updated(PaxLoggingServiceImpl.java:321)
> at
> org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.run(ConfigurationManager.java:1160)
> at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:104)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.ClassNotFoundException:
> javax.mail.MessagingException not found by
> org.ops4j.pax.logging.pax-logging-service [4]
> at
> org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:787)
> at org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:71)
> at
> org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1768)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
> at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
> ... 15 more
>
> This seems to indicate that the log4j SMTPAppender class is being found
> correctly but then it cannot resolve the javax.mail package.
>
> What is the best way to get the javax.mail package available to the pax
> logging bundle? I found a number of postings that indicated this
> requires an update to the jre or config properties file but I hesitate
> to start randomly changing things I dont understand.
>
> Thanks!
>
> Sam Hendley
>
> PS: The following are the pages I found that seem to relate to this topic:
>
> Eclispe specific way of adding javax.mail
> http://forums.pragprog.com/forums/103/topics/3736
>
> General javax.mail in OSGi writeup
> http://thecarlhall.wordpress.com/2009/10/27/javamail-in-osgi/
>
> Using javax.mail in OSGi from camel list
> http://camel.465427.n5.nabble.com/new-wiki-page-notes-on-mail-and-osgi-td4557069.html
>
>

-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Re: Using Log4j mail appender in Karaf with pax logging

Posted by mikevan <mv...@comcast.net>.
Sam,

Depending on the level of Java you are using with Karaf (currently 1.5.x and
1.6.x are supported), you'd want to edit your jre.properties file under the
appropriate version that you're using, and add the following line between
javax.imageio.stream and javax.management (note the leading space):

 javax.mail, \

Once this is done, restart karaf, and the new package will be available
within Karaf. To verify this, run this command:

karaf@root>  exports | grep javax.mail

Please let me know if that helps.


Sam Hendley wrote:
> 
> Is it possible to use the log4j email appenders in karaf?
> 
> I have been googling for a few hours and I have seen a number of partial
> answers but nothing definative one way or the other.
> 
> Here is my SMTP appender configuration in org.ops4j.pax.logging.cfg
> 
> log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
> log4j.appender.MAIL.BufferSize=10
> log4j.appender.MAIL.SMTPHost=xxxxx
> log4j.appender.MAIL.From=xxxxxx
> log4j.appender.MAIL.to=xxxxx
> log4j.appender.MAIL.Subject=Error Alert
> log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
> log4j.appender.MAIL.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
> 
> and the exception I get:
> 
> Jul 18, 2011 6:43:50 PM org.apache.karaf.main.SimpleFileLock lock
> INFO: locking
> 18 Jul 2011 18:43:50,484 ERROR [CM Configuration Updater (ManagedService
> Update: pid=org.ops4j.pax.logging)] org.apache.felix.configadmin (?:   ?)
> [org.osgi.service.log.LogService, org.knopflerfish.service.log.LogService,
> org.ops4j.pax.logging.PaxLoggingService,
> org.osgi.service.cm.ManagedService,
> id=8, bundle=4]: Unexpected problem updating Configuration
> PID=org.ops4j.pax.logging, factoryPID=null,
> bundleLocation=mvn:org.ops4j.pax.logging/pax-logging-service/1.6.3-LOCATION
> java.lang.NoClassDefFoundError: javax/mail/MessagingException
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:169)
> at org.apache.log4j.helpers.Loader.loadClass(Loader.java:198)
> at
> org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:326)
> at
> org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:123)
> at
> org.apache.log4j.PaxLoggingConfigurator.parseAppender(PaxLoggingConfigurator.java:81)
> at
> org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:735)
> at
> org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:615)
> at
> org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:502)
> at
> org.apache.log4j.PaxLoggingConfigurator.doConfigure(PaxLoggingConfigurator.java:57)
> at
> org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl.updated(PaxLoggingServiceImpl.java:187)
> at
> org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl$1ManagedPaxLoggingService.updated(PaxLoggingServiceImpl.java:321)
> at
> org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.run(ConfigurationManager.java:1160)
> at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:104)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException
> not found by org.ops4j.pax.logging.pax-logging-service [4]
> at
> org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:787)
> at org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:71)
> at
> org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1768)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
> at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
> ... 15 more
> 
> This seems to indicate that the log4j SMTPAppender class is being found
> correctly but then it cannot resolve the javax.mail package.
> 
> What is the best way to get the javax.mail package available to the pax
> logging bundle? I found a number of postings that indicated this requires
> an
> update to the jre or config properties file but I hesitate to start
> randomly
> changing things I dont understand.
> 
> Thanks!
> 
> Sam Hendley
> 
> PS: The following are the pages I found that seem to relate to this topic:
> 
> Eclispe specific way of adding javax.mail
> http://forums.pragprog.com/forums/103/topics/3736
> 
> General javax.mail in OSGi writeup
> http://thecarlhall.wordpress.com/2009/10/27/javamail-in-osgi/
> 
> Using javax.mail in OSGi from camel list
> http://camel.465427.n5.nabble.com/new-wiki-page-notes-on-mail-and-osgi-td4557069.html
> 


-----
Mike Van
--
View this message in context: http://karaf.922171.n3.nabble.com/Using-Log4j-mail-appender-in-Karaf-with-pax-logging-tp3180892p3180973.html
Sent from the Karaf - User mailing list archive at Nabble.com.