[Building Sakai] How to setup logging to send ERRORs by mail

Matvey Maslov matvey at sciworth.com
Thu Sep 30 02:13:39 PDT 2010


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! :)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20100930/abaecc2f/attachment.html 


More information about the sakai-dev mailing list