根据您的播放框架版本,您必须从 play doc 自定义您的 logback:
如果你想完全自定义 logback,只需定义一个
conf/application-logger.xml 或 conf/logger.xml 配置文件。
这是 Play 使用的默认配置文件:
在播放框架 4 是 logback.xml。对你来说,我认为最简单的方法是创建这样的自定义记录器:
首先在您的控制器中创建一个自定义记录器:
private static final Logger.ALogger CustomLogger = Logger.of("custom");
像这样:
package controllers;
import play.Logger;
import play.mvc.*;
public class Application extends Controller {
private static final Logger.ALogger CustomLogger = Logger.of("custom");
public Result index() {
String toNormal = "this goes normal way";
String tolevelInfo = "this goes to info";
String toCustom = "this goes to custom";
Logger.info(tolevelInfo);
Logger.error(toNormal);
Logger.debug(toNormal);
Logger.warn(toNormal);
CustomLogger.info(toCustom);
return ok("Take a look of your logs files");
}
}
2)其次你应该像这样写一个配置文件,这也有一个按级别过滤的例子,并创建3个文件application.log,customfile.log和filtrolevelinfo.log:
<configuration>
<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%coloredLevel - %logger - %message%n%xException</pattern>
</encoder>
</appender>
<appender name="FILTROLEVELINFO" class="ch.qos.logback.core.FileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>${application.home}/logs/filtrolevelinfo.log</file>
<encoder>
<pattern>%date [%level] from %logger in %thread - %message%n%xException</pattern>
</encoder>
</appender>
<appender name="CUSTOM" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/customfile.log</file>
<encoder>
<pattern>%date [%level] from %logger in %thread - %message%n%xException</pattern>
</encoder>
</appender>
<!--
The logger name is typically the Java/Scala package name.
This configures the log level to log at for a package and its children packages.
-->
<logger name="play" level="DEBUG"/>
<logger name="application" level="DEBUG"/>
<logger name="custom" level="DEBUG">
<appender-ref ref="CUSTOM" />
</logger>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILTROLEVELINFO" />
</root>
</configuration>
有了这个,你应该得到这三个文件和 1 调用方法的输出:
应用程序日志:
2015-06-03 20:02:20,838 [INFO] from play.api.libs.concurrent.ActorSystemProvider in pool-15-thread-2 - Starting application default Akka system: application
2015-06-03 20:02:20,903 [INFO] from play.core.server.NettyServer$ in pool-15-thread-2 - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
customfile.log:
2015-06-03 20:02:30,997 [INFO] from custom in application-akka.actor.default-dispatcher-4 - this goes to custom
filtrolevelinfo.log:
2015-06-03 20:02:30,748 [INFO] from play.api.libs.concurrent.ActorSystemProvider in ForkJoinPool-2-worker-1 - Starting application default Akka system: application
2015-06-03 20:02:30,889 [INFO] from play.api.Play$ in ForkJoinPool-2-worker-1 - Application started (Dev)
2015-06-03 20:02:30,995 [INFO] from application in application-akka.actor.default-dispatcher-4 - this goes to info
2015-06-03 20:02:30,997 [INFO] from custom in application-akka.actor.default-dispatcher-4 - this goes to custom
我希望这对你有帮助;-)