log4j.priperties日志配置:(没能解决druid只记录自己框架相关的日志信息)
#定义日志输入级别,以及不同输出目的地(第1位为:日志级别)
log4j.rootLogger=debug,console,d,i,w,e,druid
#过滤掉不需要的一些框架的日志级别
log4j.category.org.springframework=INFO
log4j.category.org.hibernate=INFO
log4j.category.net.sf.ehcache=INFO
#定义日志输入目的地 (控制台)
log4j.appender.console=org.apache.log4j.ConsoleAppender
#定义日志以什么形式进行输出,黑色System.out 红色System.err
log4j.appender.console.Target=System.out
#定义日志输出时,以什么格式进行输出
log4j.appender.console.layout=org.apache.log4j.PatternLayout
# %d 发生的时间 %p 日志级别 %c发生在哪个类 %l 发生在哪一行 %m 日志信息 %n换行
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %p %c %l --%m%n
#定义日志输入目的地 (文件)
log4j.appender.d=org.apache.log4j.RollingFileAppender
#设置具体的文件路径
log4j.appender.d.File=d:/logs/ssh-debug.log
#设置文件最大容量
log4j.appender.d.MaxFileSize=50MB
#设置文件备份数量
log4j.appender.d.maxBackupIndex=5
#设置文件输出方式:覆盖|追加(true)
log4j.appender.d.Append=true
#日志输出到文件的最低级别
log4j.appender.d.Threshold=DEBUG
#定义日志输出时,以什么格式进行输出
log4j.appender.d.layout=org.apache.log4j.PatternLayout
log4j.appender.d.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %p %c %l %m%n
#定义日志文件中,最低记录级别,以及最高记录级别
log4j.appender.d.filter.infoFilter=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.d.filter.infoFilter.levelMin=DEBUG
log4j.appender.d.filter.infoFilter.levelMax=DEBUG
#(同上)
log4j.appender.i=org.apache.log4j.RollingFileAppender
log4j.appender.i.File=d:/logs/ssh-info.log
log4j.appender.i.MaxFileSize=50MB
log4j.appender.i.maxBackupIndex=5
log4j.appender.i.Append=true
log4j.appender.i.Threshold=INFO
log4j.appender.i.layout=org.apache.log4j.PatternLayout
log4j.appender.i.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %p %c %l %m%n
log4j.appender.i.filter.infoFilter=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.i.filter.infoFilter.levelMin=INFO
log4j.appender.i.filter.infoFilter.levelMax=INFO
log4j.appender.w=org.apache.log4j.RollingFileAppender
log4j.appender.w.File=d:/logs/ssh-warn.log
log4j.appender.w.MaxFileSize=50MB
log4j.appender.w.maxBackupIndex=5
log4j.appender.w.Append=true
log4j.appender.w.Threshold=WARN
log4j.appender.w.layout=org.apache.log4j.PatternLayout
log4j.appender.w.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %p %c %l %m%n
log4j.appender.w.filter.infoFilter=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.w.filter.infoFilter.levelMin=WARN
log4j.appender.w.filter.infoFilter.levelMax=WARN
log4j.appender.e=org.apache.log4j.RollingFileAppender
log4j.appender.e.File=d:/logs/ssh-error.log
log4j.appender.e.MaxFileSize=50MB
log4j.appender.e.maxBackupIndex=5
log4j.appender.e.Append=true
log4j.appender.e.Threshold=ERROR
log4j.appender.e.layout=org.apache.log4j.PatternLayout
log4j.appender.e.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %p %c %l %m%n
log4j.appender.e.filter.infoFilter=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.e.filter.infoFilter.levelMin=ERROR
log4j.appender.e.filter.infoFilter.levelMax=ERROR
#定义druid监控程序中,从warn级别的日志开始记录,并且指定记录位置为druid(目的地)
log4j.logger.druid.sql=warn,druid
log4j.logger.druid.sql.DataSource=warn,druid
log4j.logger.druid.sql.Connection=warn,druid
log4j.logger.druid.sql.Statement=warn,druid
log4j.logger.druid.sql.ResultSet=warn,druid
log4j.appender.druid=org.apache.log4j.RollingFileAppender
log4j.appender.druid.File=d:/logs/druid-slow-sql.log
log4j.appender.druid.MaxFileSize=50MB
log4j.appender.druid.maxBackupIndex=5
log4j.appender.druid.Append=true
log4j.appender.druid.Threshold=WARN
log4j.appender.druid.layout=org.apache.log4j.PatternLayout
log4j.appender.druid.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %p %c %l %m%n
log4j.xml配置(解决druid只记录自己框架相关的日志信息)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration>
<!-- appender 代表输出,用于指定日志输出的位置 -->
<!-- STDOUT 系统启动日志级别 -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%c %d{yyyy-MM-dd hh:mm:ss} %p %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="INFO"/>
</filter>
</appender>
<appender name="D" class="org.apache.log4j.RollingFileAppender">
<!-- file 存放的文件名 -->
<param name="file" value="d://logs/ssh-debug.log"/>
<param name="append" value="true"/>
<param name="maxFileSize" value="10240KB"/><!-- maxFileSize 文件的最大容量 -->
<param name="maxBackupIndex" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%c %d{yyyy-MM-dd hh:mm:ss} %p %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="DEBUG"/>
<param name="levelMax" value="DEBUG"/>
</filter>
</appender>
<appender name="I" class="org.apache.log4j.RollingFileAppender">
<!-- file 存放的文件名 -->
<param name="file" value="d://logs/ssh-info.log"/>
<param name="append" value="true"/>
<param name="maxFileSize" value="10240KB"/><!-- maxFileSize 文件的最大容量 -->
<param name="maxBackupIndex" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%c %d{yyyy-MM-dd hh:mm:ss} %p %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="INFO"/>
<param name="levelMax" value="INFO"/>
</filter>
</appender>
<appender name="W" class="org.apache.log4j.RollingFileAppender">
<!-- file 存放的文件名 -->
<param name="file" value="d://logs/ssh-warn.log"/>
<param name="append" value="true"/>
<param name="maxFileSize" value="10240KB"/><!-- maxFileSize 文件的最大容量 -->
<param name="maxBackupIndex" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%c %d{yyyy-MM-dd hh:mm:ss} %p %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="WARN"/>
<param name="levelMax" value="WARN"/>
</filter>
</appender>
<appender name="E" class="org.apache.log4j.RollingFileAppender">
<!-- file 存放的文件名 -->
<param name="file" value="d://logs/ssh-error.log"/>
<param name="append" value="true"/>
<param name="maxFileSize" value="10240KB"/><!-- maxFileSize 文件的最大容量 -->
<param name="maxBackupIndex" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%c %d{yyyy-MM-dd hh:mm:ss} %p %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="ERROR"/>
<param name="levelMax" value="ERROR"/>
</filter>
</appender>
<appender name="druid" class="org.apache.log4j.RollingFileAppender">
<!-- file 存放的文件名 -->
<param name="file" value="d://logs/druid-slow-sql.log"/>
<param name="append" value="true"/>
<param name="maxFileSize" value="10240KB"/><!-- maxFileSize 文件的最大容量 -->
<param name="maxBackupIndex" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%c %d{yyyy-MM-dd hh:mm:ss} %p %m%n"/>
</layout>
<filter class="com.ge.ssh.filter.DruidLogAcceptFilter">
<param name="keyword" value="com.alibaba"/>
<param name="level" value="ERROR"/>
</filter>
</appender>
<root>
<priority value="INFO"></priority>
<appender-ref ref="console"/>
<appender-ref ref="D"/>
<appender-ref ref="I"/>
<appender-ref ref="W"/>
<appender-ref ref="E"/>
<appender-ref ref="druid"/>
</root>
</log4j:configuration>
用到的过滤器 DruidLogAcceptFilter
import org.apache.log4j.spi.Filter;
import org.apache.log4j.spi.LoggingEvent;
public class DruidLogAcceptFilter extends Filter {
private String keyword;
private Level level;
@Override
public int decide(LoggingEvent event) {
// TODO Auto-generated method stub
// 得到正在记录日志的类的类名
String msg = event.getLocationInformation().getClassName();
if (msg.contains(keyword) && event.getLevel() == level) {
return Filter.ACCEPT;
} else {
return Filter.DENY;
}
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public Level getLevel() {
return level;
}
public void setLevel(Level level) {
this.level = level;
}
}
然后在web.xml配置文件中去引入log4j.xml即可
如何引入见:https://blog.youkuaiyun.com/IT_CREATE/article/details/86592388