2013-07-24 71 views
9

我想要使用自定義佈局類進行玩框架2.0的logback日誌記錄。玩框架logback自定義佈局

首先,我定義的包utils的自定義佈局類:

package utils; 

public class MonitorLayoutForLogback extends LayoutBase<ILoggingEvent> { 
... 
} 

在我的conf/logging.xml文件,我把:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> 
      <layout class="utils.MonitorLayoutForLogback"> 
          <param name="programName" value="uowVisualizer" /> 
          <param name="serviceGroup" value="shared" /> 
          <param name="serviceIdentifier" value="uowVisualizer" /> 
      </layout> 
     </encoder> 
    </appender> 

但是當我戲中運行,如,

play run 

我看到:

14:20:18,387 |-ERROR in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Could not create component [layout] of type [utils.MonitorLayoutForLogback] java.lang.ClassNotFoundException: utils.M 
onitorLayoutForLogback 
    at java.lang.ClassNotFoundException: utils.MonitorLayoutForLogback 
    at  at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at  at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at  at java.security.AccessController.doPrivileged(Native Method) 
    at  at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at  at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at  at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at  at sbt.PlayCommands$$anonfun$53$$anonfun$55$$anon$2.loadClass(PlayCommands.scala:535) 
    at  at ch.qos.logback.core.util.Loader.loadClass(Loader.java:124) 
    at  at ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:100) 
    at  at ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) 
    at  at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) 
    at  at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) 
    at  at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50) 
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:157) 
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:143) 
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:106) 
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:56) 
    at  at play.api.Logger$$anonfun$configure$8.apply(Logger.scala:248) 
    at  at play.api.Logger$$anonfun$configure$8.apply(Logger.scala:247) 
    at  at scala.Option.map(Option.scala:145) 
    at  at play.api.Logger$.configure(Logger.scala:247) 
    at  at play.api.Application$class.$init$(Application.scala:266) 

因此,play找不到我創建的佈局類。如何將佈局類放在類路徑上?

請注意,我也嘗試過通過分期項目,

play clean compile stage 

,然後通過

target/start 

開工的項目開始從封裝版本的項目,我沒有看到上述失蹤類錯誤。然而,我也從來沒有看到任何輸出,我甚至沒有看到建造的類。我添加了System.out.println語句每個構造該類如下,以驗證是否被正在興建類:

public MonitorLayoutForLogback() { 
     System.out.println("MonitorLayoutForLogback Constructor without arguments"); 
    } 

    public MonitorLayoutForLogback(String program) { 
     System.out.println("MonitorLayoutForLogback Constructor with program "+program); 
     _program = program; 
    } 

    public MonitorLayoutForLogback(String program, String sGroup, String sid) { 
     System.out.println("MonitorLayoutForLogback Constructor with program "+program+" sGroup "+sGroup+" sid "+sid); 
     _program = program; 
     MonitoringInfo.setServiceGroup(sGroup); 
     MonitoringInfo.setServiceIdentifier(sid); 
    } 

我到的logback配置的新手,所以我相信我錯過了一些明顯的東西。謝謝您的幫助。

回答

-1

對於我來說,我燒了,當我的應用程序如下看到這個錯誤:

./activator -Dhttp.port=9000 -Dconfig.resource=local.conf -jvm-debug 9999 run 

但我過去,通過使用開始,而不是運行

./activator -Dhttp.port=9000 -Dconfig.resource=local.conf -jvm-debug 9999 start 

然而,這創造了另一個問題;說找不到application.conf。這並不重要,我指定的文件爲這樣:

-Dconfig.resource=local.conf 

重命名的local.conf到application.conf後,我對記錄的自定義佈局類是發現和使用。