Wiki source code of Logging
Version 8.1 by Vincent Massol on 2011/05/19
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{box cssClass="floatinginfobox" title="**Contents**"}}{{toc/}}{{/box}} | ||
2 | |||
3 | = For XWiki 3.1 and beyond = | ||
4 | |||
5 | Starting with version 3.1 XWiki logs using [[SLF4J>>http://www.slf4j.org/]]. By default XWiki is configured so that SLF4J uses [[Logback>>http://logback.qos.ch/]]. XWiki's Logback configuration is located in the ##[[WEB-INF/classes/logback.xml>>https://github.com/xwiki/xwiki-platform/raw/master/xwiki-platform-core/xwiki-platform-web/src/main/resources/logback.xml]]## file. | ||
6 | |||
7 | To customize the Logback configuration simply edit the file and restart the Servlet container for it to take effect. | ||
8 | |||
9 | {{info}} | ||
10 | By default XWiki is configured to log everything on the console only. | ||
11 | {{/info}} | ||
12 | |||
13 | == Using JMX to change the logging configuration == | ||
14 | |||
15 | [[LogBack exposes its configuration with JMX>>http://logback.qos.ch/manual/jmxConfig.html]] and thus it's possible to use a JMX console to modify the logging configuration at runtime, thus not needing to restart the Servlet container. This is very useful in production when needing to debug an issue. | ||
16 | |||
17 | See the [[Monitoring Guide>>AdminGuide.Monitoring]] for more details on using JMX with XWiki. | ||
18 | |||
19 | = For older XWiki versions = | ||
20 | |||
21 | XWiki versions 3.0 and older use Commons Logging for logging. By default XWiki is configured so that Commons Logging uses log4J. XWiki's Log4J configuration is located inside XWiki's JAR (xwiki-core-x.y.jar), in a ##[[log4j.properties>>https://github.com/xwiki/xwiki-platform/raw/13e01088e74c170452088a56fe54fb76a7ecb041/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/log4j.properties]]## file. XWiki' JAR is itself located in your ##WEB-INF/lib/## directory. | ||
22 | |||
23 | {{info}} | ||
24 | By default XWiki is configured to log everything on the console only. | ||
25 | {{/info}} | ||
26 | |||
27 | == Using a custom Log4J configuration == | ||
28 | |||
29 | The best solution is to create a new ##log4j.properties## file in your ##WEB-INF/classes## directory. It'll thus override the one from the XWiki JAR. As an example, here's a sample configuration: | ||
30 | |||
31 | {{code language="none"}} | ||
32 | ### Direct log messages to stdout | ||
33 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender | ||
34 | log4j.appender.stdout.Target=System.out | ||
35 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout | ||
36 | log4j.appender.stdout.layout.ConversionPattern=%d [%X{url}] [%t] %-5p %-30.30c{2} %x - %m %n | ||
37 | |||
38 | ### By default everything that is of warning or severity WARN, ERROR or FATAL is logged both to | ||
39 | ### the console and to the xwiki.log file. | ||
40 | log4j.rootLogger=warn, stdout | ||
41 | |||
42 | ### Hibernate logging options | ||
43 | log4j.logger.org.hibernate=warn | ||
44 | log4j.logger.org.hibernate.SQL=warn | ||
45 | log4j.logger.org.hibernate.type=warn | ||
46 | log4j.logger.org.hibernate.ps.PreparedStatementCache=warn | ||
47 | |||
48 | ### XWiki logging configuration | ||
49 | log4j.logger.org.xwiki=info | ||
50 | log4j.logger.com.xpn.xwiki=warn | ||
51 | log4j.logger.com.xpn.xwiki.render.XWikiRadeoxRenderEngine=warn | ||
52 | log4j.logger.com.xpn.xwiki.store.migration=info | ||
53 | |||
54 | ### Deactive Struts warnings | ||
55 | log4j.logger.org.apache.struts.util.RequestUtils=error | ||
56 | |||
57 | ### Deactivate JGroups warnings | ||
58 | log4j.logger.org.jgroups=error | ||
59 | |||
60 | ## Deactive PDF Export CSS Applier warnings | ||
61 | log4j.logger.info.informatica.doc.style.css.dom=error | ||
62 | log4j.logger.org.apache.fop.layoutmgr.inline.ContentLayoutManager=error | ||
63 | {{/code}} | ||
64 | |||
65 | Refer to Log4J's documentation to understand the settings. As an example, to turn on Hibernate's calls, just set the following: | ||
66 | |||
67 | {{code}} | ||
68 | log4j.logger.org.hibernate.SQL=debug | ||
69 | {{/code}} | ||
70 | |||
71 | = Activating the XWiki Monitoring feature = | ||
72 | |||
73 | {{info}} | ||
74 | The monitoring feature is already active in the default configuration. | ||
75 | {{/info}} | ||
76 | |||
77 | XWiki has a feature to monitor times spent in its major components. To activate it, you need to: | ||
78 | |||
79 | * Enable the Monitor plugin by adding/modifying the following plugin definition in the ##xwiki.cfg## configuration file: | ||
80 | |||
81 | {{code language="none"}} | ||
82 | xwiki.plugins=\ | ||
83 | [...] | ||
84 | com.xpn.xwiki.monitor.api.MonitorPlugin | ||
85 | {{/code}} | ||
86 | |||
87 | * Enable it by adding/modifying the following in the ##xwiki.cfg## configuration file: | ||
88 | |||
89 | {{code language="none"}} | ||
90 | xwiki.monitor=1 | ||
91 | {{/code}} | ||
92 | |||
93 | * Since the plugin logs everything under the ##DEBUG## severity you also need to configure the XWiki Logging (as described above) by setting the ##com.xpn.xwiki.monitor## category to the ##DEBUG## level. ((( | ||
94 | |||
95 | For example for Logback it means adding the following in ##logback.xml##: | ||
96 | |||
97 | {{code language="none"}} | ||
98 | {{/code}} | ||
99 | |||
100 | And for older XWiki versions using Log4J it means adding the following in ##log4j.properties##: | ||
101 | |||
102 | {{code language="none"}} | ||
103 | log4j.logger.com.xpn.xwiki.monitor=debug | ||
104 | {{/code}} | ||
105 | ))) |