use*_*729 17 playframework-2.0 playframework-2.1
我正在使用Play 2.1.我正在使用默认记录器play.api.Logger.我对它是如何工作感到困惑.
在我的scala代码中,方法"getPayment()"中的类"com.myapp.tickets"中的一行像这样
Logger.info("getTickets")
Run Code Online (Sandbox Code Playgroud)
生成这样的日志消息.
14:58:58.005 INFO application play.api.LoggerLike$class info getTickets
Run Code Online (Sandbox Code Playgroud)
我的application-logger.xml模式是
%d{HH:mm:ss.SSS} %-5level %logger %class %method %msg%n
Run Code Online (Sandbox Code Playgroud)
我的问题是%logger告诉我"应用程序",%class告诉我"play.api.LoggerLike $ class和%method告诉我"信息".我知道所有这些.我当然希望避免增加更多的瑕疵进入消息本身(如类名或方法).
如果我打印出调用堆栈(%调用者),那么级别2就有我想要的,但这似乎不是生成日志的可行方法.
如何配置它以输出特定于应用程序的类和方法,而不是输出记录器本身的类和方法?
jsp*_*oix 26
%class{0} 只会输出类名,所以代替:
com.something.MyClass
Run Code Online (Sandbox Code Playgroud)
你会得到:
MyClass
Run Code Online (Sandbox Code Playgroud)
这是我的logback模式通常看起来的样子:
%d{HH:mm:ss} [%thread] %-5p %class{0} - %m%n
Run Code Online (Sandbox Code Playgroud)
如果您有兴趣,也可以添加方法和行:
%d{HH:mm:ss} [%thread] %-5p %class{0}.%method:%L - %m%n
Run Code Online (Sandbox Code Playgroud)
Din*_*nka 12
回归模式:
%d{HH:mm:ss.SSS} [%thread] %-5level %class{36}.%M %L - %msg%n
Run Code Online (Sandbox Code Playgroud)
结果:
14:53:47.816 [http-bio-8080-exec-3] DEBUG c.f.s.w.s.i.example.ExServiceImpl.getStatus 993 - blocked-->0
Run Code Online (Sandbox Code Playgroud)
[http-bio-8080-exec-3] 是线程名称
c.f.s.w.s.i.example 是包名
ExServiceImpl 是班级名称
getStatus 是方法名称
993 是行号
| 归档时间: |
|
| 查看次数: |
16455 次 |
| 最近记录: |