log4j.priperties配置或log4j.xml配置

本文详细介绍了使用log4j进行日志配置的方法,包括不同级别的日志输出、文件滚动策略及自定义过滤器的实现,特别针对Druid监控日志的优化配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值