搭建SpringBoot+dubbo+zookeeper+maven框架(二)
搭建SpringBoot+dubbo+zookeeper+maven框架(二)
上一篇文章是关于搭建SpringBoot+dubbo+zookeeper+maven框架的,但是里面的功能还不够完善,今天就日志管理方面做一些改善。
下了demo的网友可能会发现项目在启动时会有警告:
SLF4J: Class path contains multiple SLF4J bindings.
截图如下:
意思是说logback-classic-1.2.3.jar和slf4j-log4j12-1.7.25.jarjre包冲突了,所以要删掉一个。点击file<project structure<libraries,找到slf4j-log4j12-1.7.25.jarjre包,把他删掉,
再次启动还有一个警告:
log4j:WARN No appenders could be found for logger (com.alibaba.dubbo.common.logger.LoggerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
截图如下:
意思是说要初始化一个log4j的系统配置,所以这里要在customer和provider项目的resource下添加一个log4j.properties配置文件,内容如下:
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
再次启动就没有刚刚的警告了。
现在控制台就没有报错和警告了。
当我们发送一个请求时,这个请求要执行sql语句对数据库的数据进行增删改查,我想在控制台打印输出,这时应该怎么办呢?
其实SpringBoot在启动项目的时候已经把logback集成进去了,而操作数据库是在provider这个模块中进行的,所以我们可以在provider模块中加一个logback.xml配置文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder 默认配置为PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="logFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/e-service.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/e-service.%d{yyyy-MM-dd}.zip</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{40} - %msg%n</Pattern>
</layout>
</appender>
<!-- <logger name="com.hengbao.fundcheck.repository" level="DEBUG"/> -->
<!-- 以下这一句至关重要如果没有,就无法输出 sql 语句 -->
<!--注意:在 spring boot 中,想在控制台打印 mybatis 的 sql 语句,只需要配置下边这一句就好了。-->
<!--如果想要记录更详细的 SQL 日志,只需要把下面的日志级别改成 TRACE 就可以了-->
<!--即将 mapper 接口打入 logger 就行。-->
<logger name="com.lj.provider.mapper" level="DEBUG"/>
<logger name="org.mybatis.spring" level="DEBUG" />
<logger name="org.apache.mybatis" level="DEBUG" />
<logger name="java.sql.PreparedStatement" level="DEBUG" />
<logger name="java.sql.Statement" level="DEBUG" />
<logger name="java.sql.Connection" level="DEBUG" />
<logger name="java.sql.ResultSet" level="DEBUG" />
<logger name="com.alibaba" level="INFO" />
<logger name="org.apache.commons" level="INFO" />
<logger name="org.apache.zookeeper" level="INFO" />
<logger name="org.springframework" level="INFO" />
<logger name="org.quartz" level="INFO" />
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="logFile" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
这样就可以了,是不是很简单,这里要注意的是 <logger name=”com.lj.provider.mapper” level=”DEBUG”/>,没写这个就还是不会打印输出sql语句。
至此,就完成了对记录日志的集成。