2014-01-30 64 views
1

我用的是未來的logback 模式進入遊戲!框架應用程序:

%d - [%級別] [%LO {0}] [%類] [%F:%L] [%方法]:%MSG%N%EX {全}

但始終顯示爲%類

[play.Logger $ ALogger]或[play.api.LoggerLike $類]

,而不是使用記錄器真正的類。

完整logger.xml文件內容是下一個:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${application.home}/logs/application.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- daily rollover --> 
     <fileNamePattern>${application.home}/logs/application.%d{yyyy-MM-dd}.log</fileNamePattern> 

     <!-- keep 30 days' worth of history --> 
     <maxHistory>30</maxHistory> 
    </rollingPolicy> 
    <encoder> 
     <pattern>%d -[%level][%lo{0}][%class][%F:%L][%method]: %msg%n%ex{full}</pattern> 
     <!-- <pattern> %d{HH:mm:ss.SSS} [%thread] %-5level %class{0} - %msg%n</pattern> --> 
     <outputPatternAsHeader>true</outputPatternAsHeader> 
    </encoder> 
</appender> 

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern> 
    </encoder> 
</appender> 


<logger name="play" level="INFO" /> 
<logger name="application" level="DEBUG" /> 

<root level="ERROR"> 
    <appender-ref ref="STDOUT" /> 
    <appender-ref ref="FILE" /> 
</root> 

和幾個輸出的例子是:

2014年1月30日14:57: 57671 - [調試] [應用] [play.Logger $ ALogger] [Logger.java:332] [調試]:與dbclient ::的IsAlive:真

2014-01-30 14:57:57,695 - [INFO] [application] [play.Logger $ ALogger] [Logger.java:361] [info]:應用程序啓動。

二零一四年一月三十零日14:57:57699 - [INFO] [播放] [play.api.LoggerLike $類] [Logger.scala:90] [信息]:應用程序啓動(開發)

謝謝!

回答

0

內部類Logger.ALogger是實際調用的logback記錄器,這樣,預計該劇代碼。

不知道是否有可能重寫,使其的logback將有機會獲得調用使用該記錄器類的類。如果你真的想要輸出調用類,我想這個選項是直接在你的代碼中使用logback。

0

請參閱:https://github.com/playframework/playframework/issues/1669

簡介:該辦法的logback確實類名,文件名和linename計算是「拋出異常」,並找到在堆棧跟蹤一個特定的框架。但是通過使用play的API而不是直接的logback API,這樣索引的幀屬於播放代碼。

1

不知道,如果你找到了答案,你的問題,但我發現,做的伎倆如下:

Play.Logger.underlying().debug("Your debug message"); 

當然,你仍然必須確保提供一個自定義的conf/logger.xml文件(如您所做的那樣)來替換Play的默認值(see Play docs on Logging),並在模式元素中包含appender中的%class轉換說明符(Logback Docs)。

有些事情要考慮,然後再移動着:

  • 我不知道這會產生負面如可移植性等任何方面影響您的應用程序
  • 另請注意,您將不得不使用Play.Logger.underlying()將您的呼叫替換爲Play.Logger,或者圍繞Play.Logger創建一個包裝類。根據您的項目大小,這可能是不可接受的。

希望這有助於

Source

相關問題