ToB企服应用市场:ToB评测及商务社交产业平台

标题: log4j添加druid的慢sql日志记载到指定文件 [打印本页]

作者: 南飓风    时间: 2024-10-17 02:31
标题: log4j添加druid的慢sql日志记载到指定文件
log4j日志记载工具的基本使用

一、Log4j的基本概念

二、log4j的高级用法

log4j添加druid的慢sql日志记载到指定文件

(默认已经用过log4j了,只是不知道怎么把慢sql单独输出到一个文件里面),就是说添加依赖等等这些步调就省略了
第一步:在数据库配置文件中添加下面的代码

  1. <bean id="datasource" class="com.alibaba.druid.pool.DruidDataSource"
  2.      init-method="init" destroy-method="close">
  3.                 <property name="proxyFilters">
  4.                         <list>
  5.                                 <ref bean="stat-filter" />
  6.                                 <ref bean="log-filter" />
  7.                         </list>
  8.                 </property>
  9. </bean>
  10. <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
  11.                 <!--        <property name="mergeSql" value="true" />--> <!--用来合并重复或者是类似的sq -->
  12.                 <property name="slowSqlMillis" value="3000" /> <!-- 设置慢SQL的时间阈值 -->
  13.                 <property name="logSlowSql" value="true" /> <!-- 开启慢SQL日志记录 -->
  14. </bean>
  15. <bean id="log-filter" class="com.alibaba.druid.filter.logging.Log4jFilter">
  16.                 <!-- 配置日志记录的相关属性 -->
  17. </bean>
复制代码
第二步:在log4j.properties上添加配置(只需直接添加下面的一段配置即可)

  1. log4j.logger.com.alibaba.druid=info,druidSql
  2. log4j.additivity.com.alibaba.druid=false
  3. log4j.logger.druid.sql.DataSource=info,druidSql
  4. log4j.logger.druid.sql.Connection=info,druidSql
  5. log4j.logger.druid.sql.Statement=info,druidSql
  6. log4j.logger.druid.sql.ResultSet=info,druidSql
  7. log4j.appender.druidSql=org.apache.log4j.DailyRollingFileAppender
  8. log4j.appender.druidSql.File=${catalina.home}/logs/druid-sql.log
  9. log4j.appender.druidSql.DatePattern='.'yyyy-MM-dd
  10. log4j.appender.druidSql.ImmediateFlush=true
  11. log4j.appender.druidSql.Append=true
  12. log4j.appender.druidSql.Threshold=info
  13. log4j.appender.druidSql.layout=org.apache.log4j.PatternLayout
  14. log4j.appender.druidSql.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n
复制代码

   log4j.logger.<logger-name>:这是一个配置项,用于设置指定logger(日志记载器)的日志级别和Appender(日志输出目标地)。<logger-name>是logger的名称,通常对应Java包名或类名。
com.alibaba.druid:这是指定的logger名称,表示com.alibaba.druid包及其子包下的全部类。
=info:这表示日志级别为INFO。日志级别决定了哪些日志信息会被记载。常见的日志级别有ERROR、WARN、INFO、DEBUG、TRACE等,INFO级别表示记载信息性消息,通常用于反馈应用程序的运行状态。
,druidSql:这表示该logger的日志将被输出到名为druidSql的Appender。(也可以明白为创建了一个名为druidSql的Appender)Appender定义了日志信息的输出目标地,如控制台、文件、长途服务器等。druidSql需要在Log4j的配置文件中被定义,并指定具体的输出目标地和格式。
  
   log4j.additivity.<logger-name>:这是一个配置项,用于设置指定logger的日志转达性(additivity)。
com.alibaba.druid:同样指定了logger的名称。
=false:这表示对于com.alibaba.druid包下的日志记载,禁用日志的转达性。在Log4j中,假如additivity被设置为true(默认值),则当前logger的日志信息不但会被发送到它本身的Appender,还会被转到达父logger的Appender。设置为false后,当前logger的日志信息将只被发送到它本身的Appender,不再向上转达。
  第三步:留意事项


不要在log4j.rootLogger=xxx(或者是log4j.rootCategory=xxx旧版本的)配置上面配置的druidSql,否则其他的日志记载也会加到该日志文件里面
  1. // log4j.rootCategory=INFO,druid1,druid2  // 旧版本的使用的就是log4j.rootCategory
  2. log4j.rootLogger=INFO,druid1,druid2 // 新版本的使用的是log4j.rootLogger
复制代码
就是说假如在rootLogger上配置了名称,它就会把全部包的日志都会打印的


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4