2017-02-01 19 views
0

私はakkaシステムでslf4jロガーを実行しています。システムのメモリが不足している場合は、コンソールにOutOfMemoryErrorが表示されます。ただし、これはログファイルには表示されません。これは、コンソールの上部から消えてしまう前に気付かなければならないので、これらのエラーを見つけにくいものにします。それらをログファイルにも表示させる方法はありますか?slf4jにOutOfMemoryErrorを記録するには

これはエラーです:

[error] (pool-21-thread-22) java.lang.OutOfMemoryError: Java heap space 
java.lang.OutOfMemoryError: Java heap space 
     at java.util.Arrays.copyOf(Unknown Source) 
     at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source) 
     at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source) 
     .... 

そして、これは私がコンソールVSログファイルにまったく同じ出力を与えるために設定したいと思った私のlogback.xml、次のとおりです。

<configuration> 

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%d{HH:mm:ss.SSS} %-5level [%X{akkaSource}] %logger{36} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
    <file>log/akka.log</file> 
    <append>false</append> 
    <encoder> 
     <pattern>%d{HH:mm:ss.SSS} %-5level [%X{akkaSource}] [%thread] %logger{36} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <logger name="slick" level="INFO"> 
    </logger> 

    <logger name="myserver" level="DEBUG"> 
    </logger> 

    <logger name="akka" level="DEBUG"> 
    </logger> 

    <logger name="spray" level="DEBUG"> 
    </logger> 

    <root level="DEBUG"> 
    <appender-ref ref="CONSOLE" /> 
    <appender-ref ref="FILE" /> 
    </root> 

</configuration> 

他のほとんどのエラーは、コンソールとログファイルの両方に表示されますが、OutOfMemoryErrorでは表示されません。ありがとう。 Scalatraで

答えて

0

私はMyServlet extending ScalatraServleterrorを追加することで、ログに表示するOOMを得た:

error { 
    case t: Throwable => { 
    logger.error(s"Unexpected throwable: ${t.toString}", t) 
    throw t 
    } 
} 
関連する問題