[英]How can I display the CLASSNAME in the log for PLAY Java?
为什么Play不显示/输出日志中的类名?
这是我的记录器配置:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/application.log</file>
<encoder>
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/debug_log.%d{yyyy-MM-dd}.log
</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss} - %coloredLevel %logger{15} - %message%n%xException{5}</pattern>
</encoder>
</appender>
<logger name="play" level="INFO" />
<logger name="application" level="INFO" />
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<root level="WARN">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<root level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
我的用法:
Logger.info("Attached shutdown hook for jedis pool.");
输出:
2014-05-22 15:28:39 - [info] application - Attached shutdown hook for jedis pool.
我希望它更像是:
2014-05-22 15:28:39 - [info] JedisManager - Attached shutdown hook for jedis pool.
我该怎么做?
在我的application.conf中:
application.secret=""
application.langs="en"
play {
akka {
loggers = ["akka.event.Logging$DefaultLogger", "akka.event.slf4j.Slf4jLogger"]
loglevel = WARNING
actor {
default-dispatcher = {
fork-join-executor {
parallelism-factor = 1.0
parallelism-max = 36
}
}
}
}
}
db-context {
fork-join-executor {
parallelism-min = 30
parallelism-max = 30
}
}
只需在一个静态类中定义预定义的方法,例如
public static void error(String data, String className) {
Logger logger = Logger.getLogger(className);
logger.error(getClassNameAndLineNo(className)+ data); //log4j.logger
play.Logger.error(data + getClassNameAndLineNo(className)); //play default logger
}
并且每当您要显示日志时,只需调用这种错误方法即可。
private static final String className =YourClassNameFromWhereYouAreCalling.class.getName();
className.error("msg",className);
因为该方法是静态方法,所以可以通过ClassName.error();
进行调用ClassName.error();
看来记录器配置未使用。 请尝试以下操作:
logger.xml
或application-logger.xml
并放置在application-logger.xml
的conf/
目录中 conf/application.conf
删除/注释掉日志记录说明
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.