[logback-user] SMTPAppender with level WARN?
Joop Vriend
joop.vriend at ddnh.nl
Mon Oct 20 22:56:19 CEST 2008
Hello Ceki,
Thanks a lot for the very quick reply!
You were right: the output contained an ERROR: 'Mandatory "name"
attribute not set for <evaluator>'.
The name-attribute is *not* mentioned in your CounterBasedEvaluator
example in your Appender documentation:
http://logback.qos.ch/manual/appenders.html#SMTPAppender
And I couldn't find a XSD- or a DTD-file for the logback configuration.
Now I added the name-attribute, but I get a different ERROR:
Evaluator of type [packagename.AlwaysTrueEvaluator] is not of the
desired type
Again, I based my code on your CounterBasedEvaluator example. Any ideas?
Thanks again, Joop.
On 10/20/2008 10:16 PM, Ceki Gulcu wrote:
> Hello Joop,
>
> Just after creating a/any logger, invoke the following method
>
> LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
> StatusPrinter.print(lc);
>
> I *bet* the output will tell you went wrong.
>
> HTH,
>
>
> Joop Vriend wrote:
>> Hi,
>>
>> I'm trying to configure logback with an SMTPAppender that mails *every*
>> log message of level WARN or higher, but I can't get it working.
>>
>> I've tried to use a (Threshold)filter, but that didn't work. (Why can't
>> you just use filters with SMTPAppender?!?)
>>
>> I've tried to use an EvaluatorFilter with an expression 'level >= WARN',
>> but that didn't work either.
>>
>> Now I'm trying to use a custom evaluator, but still can't get it
>> working... :-( Level ERROR is being e-mailed, but other levels not.
>> For testing purposes I (even) wrote a custom evaluator-class that always
>> returns 'true' in it's evaluate()-method:
>>
>>
>> public class AlwaysTrueEvaluator extends ContextAwareBase implements
>> EventEvaluator
>> {
>> String name;
>> boolean started;
>>
>>
>> public boolean evaluate(Object event) throws NullPointerException,
>> EvaluationException
>> {
>> return true;
>> }
>>
>>
>> public void setName(String name)
>> {
>> this.name = name;
>> }
>>
>>
>> public String getName()
>> {
>> return name;
>> }
>>
>>
>> public boolean isStarted()
>> {
>> return started;
>> }
>>
>>
>> public void start()
>> {
>> started = true;
>> }
>>
>>
>> public void stop()
>> {
>> started = false;
>> }
>>
>> }
>>
>>
>>
>> This is my logback.xml file:
>>
>>
>> <configuration>
>>
>> <appender name="RootFileAppender"
>> class="ch.qos.logback.core.rolling.RollingFileAppender">
>> <append>true</append>
>> <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
>> <level>debug</level>
>> </filter>
>> <rollingPolicy
>> class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
>>
>> <fileNamePattern>${catalina.base}/logs/logback-root.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
>> </rollingPolicy>
>> <layout class="ch.qos.logback.classic.PatternLayout">
>> <pattern>%date{yyyy-MM-dd HH:mm:ss} %class %method
>> \(%file:%line\)%n %level: %message%n</pattern>
>> </layout>
>> </appender>
>>
>> <appender name="RootEmailAppender"
>> class="ch.qos.logback.classic.net.SMTPAppender">
>> <bufferSize>1</bufferSize>
>> <SMTPHost>_SMTP_HOST_</SMTPHost>
>> <to>_TO_ADDRESS_</to>
>> <from>_FROM_ADDRESS_</from>
>> <subject>logback logrecord</subject>
>> <layout class="ch.qos.logback.classic.PatternLayout">
>> <pattern>%date{yyyy-MM-dd HH:mm:ss} %class %method
>> \(%file:%line\)%n %level: %message%n</pattern>
>> </layout>
>> <evaluator class="packagename.AlwaysTrueEvaluator"/>
>> </appender>
>>
>> <root>
>> <level value ="debug"/>
>> <appender-ref ref="RootFileAppender"/>
>> <appender-ref ref="RootEmailAppender"/>
>> </root>
>>
>> </configuration>
>>
>>
>> I'm using logback 0.9.9 with slf4j 1.5.5 on Tomcat 6.0.
>>
>> Any help is greatly appreciated!
>>
>> Kind regards, Joop Vriend.
>>
More information about the Logback-user
mailing list