2017-11-15 7 views
2

私は、java Webアプリケーションのログインにslf4jとlogbackを使用しています。特定のクラス(以下の例ではMyClass)からの情報ログが電子メールで送信される必要があります。私はログバックで電子メールアペンダーを設定しました。残りの部分は、ルートロガーが設定されている場所であればどこでもかまいません。しかし、電子メールは私の現在の設定で外に出ることはありません。メールを送信しないログバック

設定...以下を参照してください:

をここでは、このためのjarファイルのバージョンや他のセットアップに関連する情報です:クラスパスに

瓶:

activation-1.1.jar 
jcl-over-slf4j-1.7.25.jar 
logback-classic-1.2.3.jar 
logback-core-1.2.3.jar 
logback-ext-spring-0.1.4.jar 
logstash-logback-encoder-4.11.jar 
mail-1.4.jar 
slf4j-api-1.7.25.jar 

は、クラスパスからのlogback.xml:

<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <pattern>%d [%thread] %-5level %logger{5}:%L - %msg%n</pattern> 
     </encoder> 
    </appender> 

    <appender name="email" class="ch.qos.logback.classic.net.SMTPAppender"> 
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
      <level>info</level> 
     </filter> 

     <smtpHost>smtp.server</smtpHost> 
     <to>[email protected]</to> 
     <from>[email protected]</from> 
     <subject>code4kix - ${HOSTNAME}: %logger{20} - %m</subject> 
     <layout class="ch.qos.logback.classic.PatternLayout"> 
      <pattern>%d [%thread] %-5level %logger{5}:%L - %msg%n</pattern> 
     </layout> 
<!--  <STARTTLS>true</STARTTLS> --> 
<!--  <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker"> --> 
<!--   <bufferSize>1</bufferSize> --> 
<!--  </cyclicBufferTracker> --> 
<!--  <asynchronousSending>false</asynchronousSending> --> 
    </appender> 

    <root level="error"> 
     <appender-ref ref="console" /> 
    </root> 

    <logger name="mypackage.MyClass" level="info" additivity="true"> 
     <appender-ref ref="email"/> 
    </logger> 

問題:

は、電子メールは、私がMyClass.javaでlogger.error文を持っている場合は罰金外出するようだが、彼らはただlogger.info持っている場合は、電子メールが出て行くことはありません。 ..閾値をinfoに設定しているにもかかわらず!

これはコンソールログに表示されますが、メールは送信されません。何が間違っている可能性がありますか?

SystemOut  O 13:18:00,012 |-INFO in ch.qos.logback.classic.net.SMTPAppender[email] - SMTPAppender [email] is tracking [1] buffers 

答えて

0

右向きに私を指し示すためにElijahに感謝します。 SMTP Appenderに文書で述べたように:

デフォルトでは、電子メールの送信はこの問題を解決するために、複数の方法があります レベルERROR

のロギングイベントによってトリガされます。私のための最も簡単な方法は、自分のEventEvaluatorのように実装して、smtp appender config(下記参照)で使用することでした。また、マーカーを使ってこの問題を解決することもできます。コンフィグで

public class OnInfoEvaluator extends EventEvaluatorBase<ILoggingEvent> { 

    @Override 
    public boolean evaluate(ILoggingEvent loggingEvent) throws NullPointerException, EvaluationException { 
     if(loggingEvent.getLevel().toInt() >= Level.INFO_INT) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 

<appender name="email" class="ch.qos.logback.classic.net.SMTPAppender"> 
    <evaluator class="mypackage.OnInfoEvaluator" /> 
    ... 
</appender> 
2

私の最近のログバックの読みから、ERRORの下でのみ電子メールが送信されるように思えます。 Chapter 4: Appenders

関連する問題