Xitrum学习笔记18 - 日志
直接使用xitrum.Log对象
任何地方都可以直接使用xitrum.Log
xitrum.Log.debug("My debug msg") xitrum.Log.info("My info msg") ...
使用xitrum.Log特质
如果想获得log在哪里创建的信息,应该继承xitrum.Log特质
package my_package import xitrum.Log object MyModel extends Log { log.debug("My debug msg") log.info("My info msg") ... }
在log/xitrum.log中,能看到从MyModel发过来的log信息
Xitrum的action扩展了xitrum.Log,所以在action中可以写下面的代码
log.debug("Hello World")
在打log以前不要查看log级别
xitrum.Log基于SLF4S(API),继而基于SLF4J。
习惯上,在运行大计算量的程序并打印结果到log之前,会检查log等级以避免浪费CPU。(这个检查log等级的理由没明白)
SLF4S会自动做检查,所以我们不必自己做检查。
在Xitrum3.13之前:
if (log.isTraceEnabled) { val result = heavyCalculation() log.trace("Output: {}", result) }
Xitrum3.13及以后
log.trace(s"Output: #{heavyCalculation()}")
配置日志等级,将日志输出到文件
在build.sbt中,配置代码
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.2"
Xitrum默认使用Logback,Logback配置文件是config/logback.xml。
可以用SLF4J的实现来代替Logback。
Logback简介:
logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。
logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。
logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。
把日志发送到Fluentd
Fluentd是一个非常流行的日志收集器(官网http://www.fluentd.org/)。
可以配置Logback把log(也许从很多地方)发送到Fluentd服务器中。
首先,添加 logback-more-appenders库到项目中:
libraryDependencies += "org.fluentd" % "fluent-logger" % "0.2.11" resolvers += "Logback more appenders" at "http://sndyuk.github.com/maven" libraryDependencies += "com.sndyuk" % "logback-more-appenders" % "1.1.0"
然后,在config/logback.xml
... <appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender"> <tag>mytag</tag> <label>mylabel</label> <remoteHost>localhost</remoteHost> <port>24224</port> <maxQueueSize>20000</maxQueueSize> <!-- Save to memory when remote server is down --> </appender> <root level="DEBUG"> <appender-ref ref="FLUENT"/> <appender-ref ref="OTHER_APPENDER"/> </root> ...