简体   繁体   English

如何在PLAY Java的日志中显示CLASSNAME?

[英]How can I display the CLASSNAME in the log for PLAY Java?

Why doesn't Play show/output the classname in the log? 为什么Play不显示/输出日志中的类名?

Here's my logger config: 这是我的记录器配置:

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

My usage: 我的用法:

Logger.info("Attached shutdown hook for jedis pool.");

The output: 输出:

2014-05-22 15:28:39 - [info] application - Attached shutdown hook for jedis pool.

I wish it was more like: 我希望它更像是:

2014-05-22 15:28:39 - [info] JedisManager - Attached shutdown hook for jedis pool.

How can I accomplish this? 我该怎么做?

In my application.conf: 在我的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
    }
}

Just define the predefined method in one static class like 只需在一个静态类中定义预定义的方法,例如

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
    }

and whenever you want to display log,just call the error method like this. 并且每当您要显示日志时,只需调用这种错误方法即可。

private static final String className =YourClassNameFromWhereYouAreCalling.class.getName();
className.error("msg",className);

because, the method is static method.so you can call by ClassName.error(); 因为该方法是静态方法,所以可以通过ClassName.error();进行调用ClassName.error();

It looks like the logger configuration is not picked up. 看来记录器配置未使用。 Try the following: 请尝试以下操作:

  • make sure the logger configuration is called logger.xml or application-logger.xml and placed in the conf/ directory of the application 确保记录器配置名为logger.xmlapplication-logger.xml并放置在application-logger.xmlconf/目录中
  • remove / comment out the logging instructions from conf/application.conf conf/application.conf删除/注释掉日志记录说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM