前两天记录了一下tomcat中怎样替换使用log4j.这里再记录一下替换使用slf4j.
1.在slf4j的官网中下载slf4j的包,里面找到jul-to-slf4j-1.6.1.jar放到tomcat的lib目录下
2.修改tomcat的logging.properties文件,把自带的handlers和.handlers都注释掉,添加:.handlers = org.slf4j.bridge.SLF4JBridgeHandler
3.使用logback的话,把logback.xml文件放到classpath下,下面是示例:
<!-- the scan=true indicates an automatically reloading while modification -->
<configuration scan="true">
<!-- Setting the context name is a simple and straightforward method in order to distinguish between multiple
applications logging to the same target -->
<contextName>edrop_web_server</contextName>
<!-- set a variable refered to the path of log -->
<property name="LOG_HOME" value="${catalina.base}/../logs" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n %ex</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${LOG_HOME}/server.log</file>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
</encoder>
</appender>
<appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- <Encoding>UTF-8</Encoding> -->
<File>${LOG_HOME}/server.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<FileNamePattern>${LOG_HOME}/server.%i.log.zip</FileNamePattern>
<MinIndex>1</MinIndex>
<MaxIndex>20</MaxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>20MB</MaxFileSize>
</triggeringPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date [%thread] %-5level %logger{10} [%file:%line] %msg%n %ex</pattern>
</layout>
</appender>
<!-- the name is the package name -->
<logger name="com.hanborq.edrop.user.controller" level="INFO"/>
<root level="debug">
<!--<appender-ref ref="STDOUT"/>-->
<!-- <appender-ref ref="FILE" /> -->
<appender-ref ref="RollingFile" />
</root>
</configuration>
重启tomcat
另外,catalina.sh文件中启动时,把输出到console的内容重定向到CATALINA_OUT变量中了。org.apache.catalina.startup.Bootstrap "$@" start >> "$CATALINA_OUT" 2>&1 "&"
如果不想输出console的内容(一般是catalina.out增长太快让人烦恼),可在catalina.sh中把CATALINA_OUT定义成/dev/null
参考:http://hwellmann.blogspot.hk/2012/11/logging-with-slf4j-and-logback-in.html
http://www.slf4j.org/legacy.html中jul-to-slf4j bridge