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 đỡ.