log4jdbc-log4j2

继续上篇文章log4jdbc-log4j2留下的问题,就是logback日志切分的问题。 html

上一篇是介绍log4jdbc-log4j2 和log4j的使用,那么这边我就介绍一下log4jdbc-log4j2 和slf4j、logback的结合使用 sql

咱们来假想这么一种状况,当系统出现了问题,咱们须要快速分析问题出在哪里并解决。 数据库

(1) 首先咱们须要知道故障发生的时间,而后查看日志,当我跟踪日志的时候,发现就只有一个log,并且这个log超大,普通的通常的编辑器根本没法打开这种超大的日志文件,就算能打开,找到故障发生点的日志也不是一件容易的事情,是否是很头疼。 api

这个时候咱们就会想要是日志能给我按照天给我存储就行了,那样我就能快速的定位日志在哪里了。 app

若是访问量比较大,就算按天访问,天天的log文件也很大怎么办,并且咱们硬盘有限,也没有必要把全部的日志都保存起来,我只须要保存最近10天的日志就行,过时的就自动删除。 编辑器

并且要是能把错误日志和访问日志分开存储那就更好了。如今咱们就来学习一下logback(也是log4j的做者),由于logback已经提供了咱们上面所说的功能。 学习

那么今天咱们就来使用slf4j和logback来实现上述功能。 spa

一、咱们须要Logback-classic.jar,Logback-classic.jar依赖slf4j-api.jar和logback-core.jar,因此咱们须要这三个jar 日志

二、咱们须要告诉log4jdbc-log4j2咱们要使用slf4j日志,那么怎么才能告诉它呢? code

咱们须要在classpath下新建log4jdbc.log4j2.properties文件

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator

3 、配置Logger

     这里有6个Logger供咱们配置,而log4j只有一个Logger啊,咱们先来看看这6个logger:

     这几个Logger都是和jdbc数据库有关的,对开发人员来讲,我想要的就是简洁的sql语句就行,因此我咱们通常经常使用jdbc.sqltiming,jdbc.resultsettable

  • jdbc.sqlonly
  • jdbc.sqltiming:
  • jdbc.audit:
  • jdbc.resultset:
  • jdbc.resultsettable:
  • jdbc.connection:

    那咱们来看看logback.xml示例

    

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<!-- 该配置主要是打印  logback 的配置信息 -->
	<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener"/>
	
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
		</encoder>
	</appender>
 	
 	<appender name="ACCESS" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 按天回滚 daily -->
			<fileNamePattern>logs/access-%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 日志最大的历史 10天 -->
			<maxHistory>10</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
		</encoder>
		<!-- 日志级别限制 -->
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY </onMismatch>
		</filter>
		<!--日志文件最大的大小 -->
		<triggeringPolicy
			class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<MaxFileSize>10MB</MaxFileSize>
		</triggeringPolicy>
	</appender>
 	
 	<!--sql 打印在控制台-->
 	<logger name="jdbc.sqltiming" level="INFO">
 		<appender-ref ref="console" />
 	</logger>
 	
 	<logger name="jdbc.resultsettable" level="INFO"></logger>
 	<logger name="jdbc.sqlonly" level="OFF"></logger>
 	<logger name="jdbc.audit" level="OFF"></logger>
 	<logger name="jdbc.resultset" level="OFF"></logger>
 	<logger name="jdbc.connection" level="OFF"></logger>
	
        <!--同时记录log日志-->	
 	<root level="INFO">
 		<appender-ref ref="ACCESS" />
 	</root>
	
</configuration>



配置文件中的appender 能够配置多个,其实您还能够配置一个错误的日志文件,只须要把日志级别限制修改为ERROR就行,同时在添加到root中就好了,其余的具体配置咱们能够参考http://logback.qos.ch/manual/index.html logback的官网。

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息