最近在帮女朋友做毕设,一个基于Mondrian的小项目。写完聚合表后竟然查询速度还是很慢,遂决定打印出日志追踪sql以查看是否真用到了聚合表。 Mondrian是带有log4j的,只是没有配置。现将配置步骤写下。

修改WEB-INF/classes下的log4j.propeties,如下:

#
# Log4J Konfiguration
#
# - Logs errors on the console
#

log4j.rootLogger = ERROR, A1

# Logging to console
log4j.appender.A1 = org.apache.log4j.ConsoleAppender

# Logging message format
# %d{DATE} Datum im Format dd MMM YYYY HH:mm:ss,SSS
# %-5p Priorität der Meldung 5stellig
# %m Meldung
# %n Zeilenumbruch
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[JPivot] %d{DATE} %-5p [Session %X{SessionID}] %C#%M: %m%n

file:WEB-INF/classes/log4j.xml

# Set root logger level to DEBUG and its only appender to MONDRIAN.
log4j.rootLogger=WARN, MONDRIAN

# MONDRIAN is set to be a ConsoleAppender.
log4j.appender.MONDRIAN=org.apache.log4j.ConsoleAppender

# MONDRIAN uses PatternLayout.
log4j.appender.MONDRIAN.layout=org.apache.log4j.PatternLayout
log4j.appender.MONDRIAN.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# Trace MDX and SQL statements
log4j.category.mondrian.mdx=DEBUG, MONDRIAN
log4j.category.mondrian.sql=DEBUG, MONDRIAN

在WEB-INF/classes下添加log4j.xml。内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<!-- ===================================================================== -->
<!-- -->
<!-- Log4j Configuration -->
<!-- -->
<!-- Default log configuration file for the Workbench. -->
<!-- Copied to the user home directory, where the user can change -->
<!-- settings for their own purposes. -->
<!-- -->
<!-- Sends log messages to the console and the workbench.log file -->
<!-- in the user's home directory. -->
<!-- -->
<!-- ===================================================================== -->

<!-- $Id: //open/mondrian/log4j.xml#2 $ -->

<!--
| For more configuration infromation and examples see the Jakarta Log4j
| owebsite: http://jakarta.apache.org/log4j
-->

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

<!-- ================================= -->
<!-- Preserve messages in a local file -->
<!-- ================================= -->

<!-- A size based file rolling appender, capturing everything -->

<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="C:/shebao.log"/>
<param name="Append" value="false"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="1"/>

<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout> 
</appender>

<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ============================== -->

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<param name="Threshold" value="WARN"/>

<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>

<!-- ================ -->
<!-- Limit categories -->
<!-- ================ -->

<!-- Limit the org.apache category to INFO as its DEBUG is verbose -->

<category name="org.apache">
<priority value="INFO"/>
</category>

<category name="com.tonbeller">
<priority value="WARN"/>
</category>

<category name="mondrian.rolap">
<priority value="WARN"/>
</category>

<category name="mondrian.gui">
<priority value="WARN"/>
</category>

<category name="mondrian.sql">
<priority value="DEBUG"/>
</category>

<category name="mondrian.mdx">
<priority value="DEBUG"/>
</category>

<!-- ======================= -->
<!-- Setup the Root category -->
<!-- ======================= -->

<root>
<priority value="INFO"/>
<appender-ref ref="FILE"/>
</root>

</log4j:configuration>

这里日志文件为:c:/shebao.log 可自定义

sql,mdx模式为DEBUG,都将显示在log中

重启Tomcat即可

Have fun

第一次用MarkDown写东西 很新奇