[Building Sakai] How to setup logging to send ERRORs by mail
Nuno Fernandes
nuno at ufp.edu.pt
Thu Sep 30 03:03:30 PDT 2010
Hi Matvey,
This is something I also would like to have. However, I am not sure if this
is possible:
The Log4J jar is located at TOMCAT/common/lib, which is the same location is
expects to find mail-*.jar library (I think this is what casues the "
NoClassDefFoundError" error on the logs)
In fact, this mail-*.jar exists, but in TOMCAT/shared/lib/ which apparently
is not available to Log4J. Having this mail library duplicated on both
locations is wrong, and I'm not sure if moving the mail-*.jar to common/lib
will be OK too: Log4J should be able to find, but I don't know if this won't
bring issues with Sakai code using the mail-*.jar (like the email service).
Maybe you can try and report back your experiences to the community?
Thanks,
Nuno
On Thu, Sep 30, 2010 at 10:13 AM, Matvey Maslov <matvey at sciworth.com> wrote:
> I'm trying to setup Log4j to send ERRORs by mail. To do this I changed
> log4j.properties in kernel-1.0.14 project
> (kernel-common/src/main/config/log4j.properties) to look like this:
> # use "A" for log in with catalina.out (actually standard output)
> log4j.rootLogger=WARN, Sakai, mail
> ...
> # Mail config
> log4j.appender.mail=org.apache.log4j.net.SMTPAppender
> log4j.appender.mail.To=<to address>
> log4j.appender.mail.From=<from address>
> log4j.appender.mail.SMTPHost=<smtp host>
> log4j.appender.mail.SMTPUsername=<smtp username>
> log4j.appender.mail.SMTPPassword=<smtp password>
> log4j.appender.mail.Threshold=ERROR
> log4j.appender.mail.BufferSize=1
> log4j.appender.mail.Subject=Sakai Error
> log4j.appender.mail.layout=org.apache.log4j.HTMLLayout
> ...
> (with valid data instead of <...> placeholders, of course).
>
> When I build and deploy the new version of kernel to Sakai 2.6.2, I get the
> following error in the logs:
>
> WARNING: Error creating bean with name
> 'org.sakaiproject.log.api.LogConfigurationManager' defined in file
> [/Users/matvey/Projects/sakai-tomcat/compone
> nts/sakai-kernel-component/WEB-INF/util-components.xml]: Invocation of init
> method failed; nested exception is java.lang.NoClassDefFoundError: Could n
> ot initialize class org.apache.log4j.LogManager
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'org.sakaiproject.log.api.LogConfigurationManager' defined in
> f
> ile
> [/Users/matvey/Projects/sakai-tomcat/components/sakai-kernel-component/WEB-INF/util-components.xml]:
> Invocation of init method failed; nested exce
> ption is java.lang.NoClassDefFoundError: Could not initialize class
> org.apache.log4j.LogManager
> Caused by: java.lang.NoClassDefFoundError: Could not initialize class
> org.apache.log4j.LogManager
> at org.apache.log4j.Logger.getRootLogger(Logger.java:135)
> at
> org.sakaiproject.log.impl.Log4jConfigurationManager.init(Log4jConfigurationManager.java:106)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java
> :1240)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1205
> )
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1171)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:425)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
> at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
> at
> org.sakaiproject.util.NoisierDefaultListableBeanFactory.getBean(NoisierDefaultListableBeanFactory.java:115)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
> at
> org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:733)
> at
> org.sakaiproject.util.SakaiApplicationContext.onRefresh(SakaiApplicationContext.java:90)
> at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
> at
> org.sakaiproject.component.impl.SpringCompMgr.init(SpringCompMgr.java:146)
> at
> org.sakaiproject.component.cover.ComponentManager.getInstance(ComponentManager.java:68)
> at
> org.sakaiproject.component.cover.ComponentManager.get(ComponentManager.java:80)
> at org.sakaiproject.dav.DavServlet.init(DavServlet.java:500)
> at javax.servlet.GenericServlet.init(GenericServlet.java:212)
> at
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139)
> at
> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:966)
> at
> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3956)
> at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4230)
> at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
> at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
> at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
> at
> org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
> at
> org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
> at
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
> at
> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
> at
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
> at
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
> at
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
> at
> org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
> at
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
> at
> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
> at
> org.apache.catalina.core.StandardService.start(StandardService.java:448)
> at
> org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
> at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
> at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
>
> Please help to set the logging properly. Thanks a lot! :)
>
>
> _______________________________________________
> sakai-dev mailing list
> sakai-dev at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>
> TO UNSUBSCRIBE: send email to
> sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
> "unsubscribe"
>
--
Nuno Fernandes . { Analyst/Programmer }
|| web . { http://www.ufp.pt | http://tinyurl.com/nfgrilo | follow_me @
nfgrilo }
|| work . { Universidade Fernando Pessoa | Praça 9 de Abril, 349 |
4249-004 Porto }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20100930/fe0dc146/attachment.html
More information about the sakai-dev
mailing list