ch.qos.logback.classic.net.SMTPAppender
Has anyone been able to ge ch.qos.logback.classic.net.SMTPAppender working? According to http://static.springsource.org/s2-dm...serviceability...
Quote:
... [you] have the complete range of Logback's appenders available for your use.
Here is my entire config/serviceability.xml
Code:
<configuration>
<appender name="EMAILER" class="ch.qos.logback.classic.net.SMTPAppender">
<SMTPHost>smtp.example.org</SMTPHost>
<To>me@example.org</To>
<From>noreply@example.org</From>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %msg %ex%n</Pattern>
</layout>
</appender>
<appender name="LOG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>serviceability/logs/log.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<FileNamePattern>serviceability/logs/log_%i.log</FileNamePattern>
<MinIndex>1</MinIndex>
<MaxIndex>4</MaxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %msg %ex%n</Pattern>
</layout>
</appender>
<appender name="EVENT_LOG_STDOUT" class="com.springsource.osgi.medic.log.logback.ReroutingAwareConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %msg %ex%n</Pattern>
</layout>
</appender>
<root level="WARN">
<appender-ref ref="LOG_FILE" />
</root>
<logger level="DEBUG" additivity="false" name="org.example">
<appender-ref ref="EVENT_LOG_STDOUT" />
<appender-ref ref="EMAILER" />
</logger>
</configuration>
but on startup I get the following error:
Code:
com.springsource.osgi.medic.log.impl.logback.LoggerContextConfigurationFailedException: Configuration failed with the following problems: [Could not create an Appender of type [ch.qos.logback.classic.net.SMTPAppender]., ActionException in Action for tag [appender], Could not find an appender named [EMAILER]. Did you define it below in the config file?, See http://logback.qos.ch/codes.html#appender_order for more details.]
at com.springsource.osgi.medic.log.impl.logback.JoranLoggerContextConfigurer.reportFailureIfNecessary(JoranLoggerContextConfigurer.java:55)
at com.springsource.osgi.medic.log.impl.logback.JoranLoggerContextConfigurer.applyConfiguration(JoranLoggerContextConfigurer.java:47)
at com.springsource.osgi.medic.log.impl.logback.StandardContextSelectorDelegate.configureDefaultContext(StandardContextSelectorDelegate.java:138)
at com.springsource.osgi.medic.log.impl.logback.DelegatingContextSelector.configureDefaultContextIfNecessary(DelegatingContextSelector.java:46)
at com.springsource.osgi.medic.log.impl.logback.DelegatingContextSelector.setDefaultLoggerContext(DelegatingContextSelector.java:39)
at com.springsource.osgi.medic.log.impl.logback.DelegatingContextSelector.<init>(DelegatingContextSelector.java:34)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.slf4j.impl.StaticLoggerBinder.dynamicalContextSelector(StaticLoggerBinder.java:139)
at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:105)
at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:60)
at org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:230)
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:121)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:112)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:275)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:248)
at com.springsource.osgi.medic.log.impl.LoggingPrintStreamWrapper.<init>(LoggingPrintStreamWrapper.java:73)
at com.springsource.osgi.medic.impl.MedicActivator.wrapPrintStream(MedicActivator.java:190)
at com.springsource.osgi.medic.impl.MedicActivator.logStart(MedicActivator.java:178)
at com.springsource.osgi.medic.impl.MedicActivator.start(MedicActivator.java:112)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:352)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:280)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:272)
at com.springsource.osgi.launcher.FrameworkBuilder.installAndStartBundles(FrameworkBuilder.java:178)
at com.springsource.osgi.launcher.FrameworkBuilder.start(FrameworkBuilder.java:160)
at com.springsource.osgi.launcher.Launcher.main(Launcher.java:58)
com.springsource.osgi.medic.log.impl.logback.LoggerContextConfigurationFailedException: Configuration failed with the following problems: [Could not create an Appender of type [ch.qos.logback.classic.net.SMTPAppender]., ActionException in Action for tag [appender], Could not find an appender named [EMAILER]. Did you define it below in the config file?, See http://logback.qos.ch/codes.html#appender_order for more details.]
at com.springsource.osgi.medic.log.impl.logback.JoranLoggerContextConfigurer.reportFailureIfNecessary(JoranLoggerContextConfigurer.java:55)
at com.springsource.osgi.medic.log.impl.logback.JoranLoggerContextConfigurer.applyConfiguration(JoranLoggerContextConfigurer.java:47)
at com.springsource.osgi.medic.log.impl.logback.StandardContextSelectorDelegate.createConfiguredContext(StandardContextSelectorDelegate.java:118)
at com.springsource.osgi.medic.log.impl.logback.StandardContextSelectorDelegate.getLoggerContext(StandardContextSelectorDelegate.java:99)
at com.springsource.osgi.medic.log.impl.logback.DelegatingContextSelector.getLoggerContext(DelegatingContextSelector.java:74)
at org.slf4j.impl.StaticLoggerBinder.getLoggerFactory(StaticLoggerBinder.java:151)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:280)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:248)
at com.springsource.osgi.medic.log.impl.LoggingPrintStreamWrapper.<init>(LoggingPrintStreamWrapper.java:73)
at com.springsource.osgi.medic.impl.MedicActivator.wrapPrintStream(MedicActivator.java:190)
at com.springsource.osgi.medic.impl.MedicActivator.logStart(MedicActivator.java:178)
at com.springsource.osgi.medic.impl.MedicActivator.start(MedicActivator.java:112)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:352)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:280)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:272)
at com.springsource.osgi.launcher.FrameworkBuilder.installAndStartBundles(FrameworkBuilder.java:178)
at com.springsource.osgi.launcher.FrameworkBuilder.start(FrameworkBuilder.java:160)
at com.springsource.osgi.launcher.Launcher.main(Launcher.java:58)
Using 2.0.0.RELEASE with Java 1.6 on Linux. We would really love to be able to have errors emailed to us via logback. Any help would be appreciated.