分享知识 传递快乐
在使用Activiti工作流时不能打印日志问题:
引入日志的方式基本上有两种:一种用log4j.properties;另一种用logback.xml配置。
引用了log4j.properties式的日志功能,那么当加入activiti工作流时,在发布项目时是不会打印日志的,但在测试下可以打印日志功能。那么在引入Activiti工作流时用log4j.properties不能打印日志是怎么回事呢?
个人理解:因为Activiti工作流用到的日志是SLF4j,而并非LOG4J。一方面因为Logback-classic非常自然实现了SLF4j,另一方面SLF4j自动重新加载配置文件当配置文件修改了,Logback-classic能自动重新加载配置文件等。(如有新的见解请留言分享)
使用logback.xml做为日志要引入以下jar:
slf4j-api.jar
log4j-over-slf4j.jar
logback-classic.jar
logback-core.jar
在maven中引入log4j-over-slf4j.jar会自动引入slf4j-api.jar
使用logback日志无须在web.xml中配置。
logback-classic不能与slf4j-log4j12同引,会导致jar冲突。
logback日志配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss} %-5p [%c] - %m%n</pattern>
</encoder>
</appender>
<logger name="org.springframework" level="ERROR" />
<logger name="org.mybatis" level="ERROR" />
<logger name="com.baomidou.mybatisplus" level="ERROR" />
<logger name="org.apache" level="ERROR" />
<!-- Activiti日志 -->
<logger name="org.activiti" level="ERROR" />
<logger name="org.activiti.engine.impl.persistence.entity" level="DEBUG" />
<!--myibatis log configure -->
<logger name="com.ibatis" level="DEBUG" />
<logger name="com.ibatis.common.jdbc.SimpleDataSource" level="DEBUG" />
<logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG" />
<logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG" />
<logger name="java.sql.Connection" level="DEBUG" />
<logger name="java.sql.Statement" level="DEBUG" />
<logger name="java.sql.PreparedStatement" level="DEBUG" />
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>