2014-04-14 73 views
6

我在Scala/Play 2.2.0應用程序上使用Logback 1.0.13。 現有的配置是這樣的:logback:控制異常堆棧跟蹤的格式

<appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
    <file>${application.home}/logs/application.log</file> 
    <encoder> 
    <pattern>%date [%level][%logger{1}][%thread{1}] %message%xException%n</pattern> 
    </encoder> 
    </appender> 

我在尋找是否有進行配置,這樣的異常回溯線有一個自定義分隔的方式。取而代之的

play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [default]] 
at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:92) ~[play_2.10-2.2.0.jar:2.2.0] 
at play.api.Configuration.reportError(Configuration.scala:570) ~[play_2.10-2.2.0.jar:2.2.0] 
at play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:252) ~[play-jdbc_2.10-2.2.0.jar:2.2.0] 

我想放些字符中的每一行的前面是這樣的:

play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [default]] 
>>> at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:92) ~[play_2.10-2.2.0.jar:2.2.0] 
>>> at play.api.Configuration.reportError(Configuration.scala:570) ~[play_2.10-2.2.0.jar:2.2.0] 
>>> at play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:252) ~[play-jdbc_2.10-2.2.0.jar:2.2.0] 
+0

我不認爲logback本身就有這種類型的東西。你也許可以寫一個自定義的logback appender並嘗試實現相同。 – Aritra

回答

9

我想通了,這樣的工作:

 <pattern>%date [%level][%logger{1}][%thread{1}] 
     %message%replace(%xException){"\n", "\\n"}%nopex%n</pattern> 

的替代%機制適用於堆棧跟蹤文本。您還需要%nopex來防止原始堆棧跟蹤再次出現;否則Logback「有幫助」會通知您省略了跟蹤並將其包含在內。

+0

有沒有辦法讓這個平臺獨立? (在Windows上有「\ r \ n」行分隔符)Logback有%n轉換字,但我不知道如何在替換方法中使用它。 –