log4jdbc-log4j2

    log4jdbc-log4j2是做什么用的,我想大家都知道,我先前一直使用的是log4jdbc-remix,但是最近我发现log4jdbc-remix 停止维护了,迁移到了log4jdbc-log4j2,因为之前就觉得这个挺不错的,所以我还是想来自己试一试。

    1、下载jar

             首先我们需要下载log4jdbc-log4j的jar包,但是log4jdbc-log4j有多个版本,我该使用那个版本呢,这个取决                 你使用的那个版本的jdk。

               log4jdbc-log4j2-jdbc3.jar for JDBC 3 support in JDK 1.5

               log4jdbc-log4j2-jdbc4.jar for JDBC 4 support in JDK 1.6

               log4jdbc-log4j2-jdbc4.1.jar for JDBC 4.1 support in JDK 1.7

               所以大家可以根据自己使用的jdk版本下载相应版本的jar。

    2、选择日志包 

          官网推荐使用log4j2,那么我们就使用log4j2吧!

          使用log4j2,需要下载log4j-core和log4j-api 两个jar

          这里还有个问题需要大家注意下,就是log4j 2.0-beta5 开始就是使用jdk1.6 编译了,所以如果你是使用jdk1.5,              那么你只能使用log4j 2.0-beta4及以下的版本了。

    3、设置Logger

          Log4jdbc-log4j2 只有一个logger,那就是log4jdbc.log4j2

<logger name="log4jdbc.log4j2" level="info" additivity="false">
    <MarkerFilter marker="LOG4JDBC_NON_STATEMENT" onMatch="DENY" onMismatch="NEUTRAL" />
	<appender-ref ref="Console" />
	<appender-ref ref="log4jdbc_file" />
</logger>

            这里我们可以来看一下MarkerFilter,我的理解就是文本过滤器,就是记录你想记录的日志文件类型

            我们来列举看看它都提供了那些Filter:

            LOG4JDBC_OTHER: 

            LOG4JDBC_EXCEPTION:

       LOG4JDBC_SQL:

          • LOG4JDBC_SELECT:

          • LOG4JDBC_UPDATE:

          • LOG4JDBC_INSERT:

          • LOG4JDBC_DELETE:

          • LOG4JDBC_CREATE:

            LOG4JDBC_NON_STATEMENT:

          • LOG4JDBC_CONNECTION:

          • LOG4JDBC_OTHER:

              • LOG4JDBC_JDBC:

                  • LOG4JDBC_AUDIT:

                  •  LOG4JDBC_RESULTSET:

              •  LOG4JDBC_RESULTSETTABLE:

           以上介绍的Filter,其实我们大家可以从Filter的名字,大致可以知道这个Filter是干啥用的,此处我不多做讲解,毕竟我也是初学(怕误人子弟),详细的说明以后再补充吧。

     4、使用log4j2

          首先我们可以新建一个log4j2.xml文件,在classpath路径下面

          我们可以参考官网提供的一个模版:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
  <appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{yyyy-MM -dd HH:mm:ss.SSS} [%t] %level - %m%n%ex%n"/>
    </Console>
    <File name="log4jdbc_file" fileName="log4jdbc.out">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %level - %m%n%ex%n"/>
    </File>
  </appenders>
  <loggers>
    <root level="off">
      <appender-ref ref="Console"/>
    </root>
    <logger name="log4jdbc.log4j2" level="info" additivity="false">
       <MarkerFilter marker="LOG4JDBC_NON_STATEMENT" onMatch="DENY" onMismatch="NEUTRAL"/>
       <appender-ref ref="log4jdbc_file"/>
    </logger>
  </loggers>
</configuration>

             关于logger level的设置,我们推荐设置为info or debug

             logger里面MarkerFilter的配置,大家可以参考官网的说明,根据自己的实际需要来做配置。

     5、配置数据源

           这个有2中配置方式

           我们先来看第一种:修改数据库链接的配置

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/platform?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

    上面是我们一般的数据库属性的一般配置,要修改的地方主要有2个:

     (1):jdbc.drvier

     (2):jdbc.url。

    我们来看看修改后的配置文件:

jdbc.driver=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
jdbc.url=jdbc:log4jdbc:mysql://localhost:3306/platform?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

   上面的是第一种配置方式,是不是很简单,我们再来看看第二种配置方式

         如果你使用spring的话,一般会有这样的配置

<bean id="dataSource" class="...">
    <property name="driverClass" value="${datasource.driverClassName}"/>
    <property name="jdbcUrl" value="${datasource.url}"/>
    <property name="user" value="${datasource.username}"/>
    <property name="password" value="${datasource.password}"/>
    ...
  </bean>

       那么我们只需要修改成这样即可:

<bean id="dataSourceSpied" class="...">
    <property name="driverClass" value="${datasource.driverClassName}"/>
    <property name="jdbcUrl" value="${datasource.url}"/>
    <property name="user" value="${datasource.username}"/>
    <property name="password" value="${datasource.password}"/>
    ...
  </bean>

  <bean id="dataSource" class="net.sf.log4jdbc.sql.jdbcapi.DataSourceSpy">
    <constructor-arg ref="dataSourceSpied" />
  </bean>

       是不是很简单,注意在2中方式之间,只要选择一种方式即可,当然你2种方式都配置上的话,估计日记就会重复的输出了,我在配置的过程中就出现了这个问题,害我找了好久,囧!

       至此,所有的配置都已完成了。我们来测试看下:

             以上输出的日志,是不是很方便我们的日常开发,有没有?

       是不是还有什么没有说到呢,对的,确实是有一些没有说道,关于日志的存储的,我想以天为单位,每天的log存放在一个log文件里,暂时我还没找到(也有可能是我自己不会用),后续我会继续研究继续补充上的,如果有会的朋友,也请指导下!

      

你可能感兴趣的:(log4j,log4jdbc-log4j2)