2013-07-24 35 views
9

Tôi đang cố gắng sử dụng lớp bố cục tùy chỉnh cho ghi nhật ký đăng nhập khung công tác phát 2.0.chơi bố cục tùy chỉnh logback khung làm việc

Trước tiên, tôi định nghĩa một lớp bố trí tùy chỉnh trong utils gói:

package utils; 

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

Trong file conf/logging.xml của tôi, tôi đặt:

<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> 

nhưng khi tôi chạy trong vở kịch, ví dụ ,

play run 

tôi thấy:

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) 

Vì vậy, không thể tìm thấy lớp bố cục mà tôi đã tạo. Làm cách nào để đặt lớp bố cục trên đường dẫn lớp?

Lưu ý rằng tôi cũng đã cố gắng dàn dựng các dự án thông qua,

play clean compile stage 

và sau đó bắt đầu dự án qua

target/start 

Bắt đầu dự án từ phiên bản đóng gói, tôi không thấy thiếu trên lỗi lớp. Tuy nhiên, tôi cũng không bao giờ thấy bất kỳ đầu ra nào, thậm chí tôi không thấy lớp được xây dựng. Tôi thêm vào báo cáo System.out.println cho mỗi constructor cho lớp này như sau, để xác minh có hay không các lớp đã được xây dựng:

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); 
    } 

Tôi là một newbie để Logback cấu hình, vì vậy tôi chắc chắn tôi đang thiếu một cái gì đó hiển nhiên. Cảm ơn đã giúp đỡ.

Trả lời

-1

Đối với tôi, tôi thấy lỗi này khi bắn lên ứng dụng của tôi như sau:

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

Nhưng tôi có quá khứ mà bằng cách sử dụng bắt đầu thay vì chạy

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

Tuy nhiên, điều này tạo ra một vấn đề khác ; không thể tìm thấy tệp application.conf. Việc tôi đã chỉ định tệp là không quan trọng:

-Dconfig.resource=local.conf 

Sau khi đổi tên local.conf thành application.conf, lớp bố cục tùy chỉnh để tìm và ghi nhật ký được tìm thấy và sử dụng.

Các vấn đề liên quan