xwiki管理指南-日志
XWiki默认是使用SLF4J和Logback来管理日志。Logback配置文件位于WEB-INF/classes/logback.xml。
XWIki classpath下面第三方包生成的日志通过Logback配置文件的定义可以自动找到自己输出方式。由于原先使用的是Apache Commons Logging(JCL),Log4J作为日志框架,为了与SLF4J共存,通过SLF4J桥接器可以保证,既 log4j-over-slf4j-*.jar和jcl-over-slf4j-*.jar。
配置日志
有多种方法配置日志。
手动
只需编辑的logback配置文件(logback.xml位于web应用程序WEB-INF/classes文件夹下),然后重新启动Servlet容器使其生效。
使用Log应用程序
XWiki 4.2开始可以在wiki的管理界面使用Logging Application,你可以用它来配置日志级别。
使用JMX
Logback通过JMX修改日志配置(比如日志级别从Debug调整到INFO),可以在运行时在JMX控制台直接操作,无需重启servlet容器。在生产环境中,调试问题时非常有用。
使用Lilith分析日志
Lilith是log事件的观察者,和log4j的chainsaw类似。而lilith还能处理大数量的log数据。想要使用Lilith,需要添加以下内容到logback.xml文件:
<appender name="socket" class="ch.qos.logback.classic.net.SocketAppender">
<RemoteHost>localhost</RemoteHost>
<Port>4560</Port>
<ReconnectionDelay>170</ReconnectionDelay>
<IncludeCallerData>true</IncludeCallerData>
</appender>
...
添加一个新的appender。例如:
<root level="warn">
<appender-ref ref="stdout"/>
<appender-ref ref="socket"/>
</root>
...
打开Lilith(桌面应用程序),它会自动监听4560端口,如下:
使用SLF4J不同的实现
简单日记门面(Facade)SLF4J是为各种loging APIs提供一个简单统一的接口。如果你愿意的话,可以使用Log4j来记录XWiki产生的所有日志,你可以按以下这样做:
- 去除Logback实现,既在classpath去除WEB-INF/lib/logback-classic-*.jar以及WEB-INF/lib/logback-core-*.jar
- 去除桥接器Log4J over SLF4J JAR包,既在classpath去除 WEB-INF/lib/log4j-over-slf4j-*.jar
- 添加链接slf4j-api和log4j的适配器,既在classpath添加:slf4j-log4j*-*.jar
- 添加Log4J到classpath
XWiki旧版本
XWiki 3.0以及更老的版本使用Commons Logging记录日志。既Commons Logging+log4J。Log4j配置文件log4j.properties位于jar包 (xwiki-core-x.y.jar)里。该jar位于WEB-INF/lib/下面。
使用自定义的Log4j配置
最好的办法是在WEB-INF/classes目录下建立一个新的log4j.properties文件。它会覆盖xwiki-core-x.y.jar里的配置。这里有一个示例配置:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%X{url}] [%t] %-5p %-30.30c{2} %x - %m %n
### By default everything that is of warning or severity WARN, ERROR or FATAL is logged both to
### the console and to the xwiki.log file.
log4j.rootLogger=warn, stdout
### Hibernate logging options
log4j.logger.org.hibernate=warn
log4j.logger.org.hibernate.SQL=warn
log4j.logger.org.hibernate.type=warn
log4j.logger.org.hibernate.ps.PreparedStatementCache=warn
### XWiki logging configuration
log4j.logger.org.xwiki=info
log4j.logger.com.xpn.xwiki=warn
log4j.logger.com.xpn.xwiki.render.XWikiRadeoxRenderEngine=warn
log4j.logger.com.xpn.xwiki.store.migration=info
### Deactive Struts warnings
log4j.logger.org.apache.struts.util.RequestUtils=error
### Deactivate JGroups warnings
log4j.logger.org.jgroups=error
## Deactive PDF Export CSS Applier warnings
log4j.logger.info.informatica.doc.style.css.dom=error
log4j.logger.org.apache.fop.layoutmgr.inline.ContentLayoutManager=error
对于Hibernate的设置,需要配置如下:
**XWiki监控功能
XWiki有一个特性,可以监控components花费的时间。要**它,你需要:
- 启用监控插件,通过添加/修改xwiki.cfg配置文件中的插件定义:xwiki.plugins=\
[...]
com.xpn.xwiki.monitor.api.MonitorPlugin - 通过添加/修改xwiki.cfg配置文件启用功能:xwiki.monitor=1
- 由于插件在DEBUG下输出所有日志,则需要设置com.xpn.xwiki.monitor为DEBUG级别
使用Logback需要在logback.xml添加以下信息:
<logger name="com.xpn.xwiki.monitor" level="debug"/>而对于使用log4j的XWiki较旧版本,需要log4j.properties添加以下信息:
log4j.logger.com.xpn.xwiki.monitor=debug