Java模块 -- Logger日志的使用

普通Log4j的使用

先来看看log4j使用的配置信息

#Appender : 为日志输出地 , Log4j提供的appender有如下几种 : 
	#org.apache.log4j.ConsoleAppender : 控制台
	#org.apache.log4j.FileAppender : 文件
	#org.apache.log4j.DailyRollingFileAppender : 每天产生一个日志文件
	#org.apache.log4j.RollingFileAppender : 文件大小达到指定尺寸的时候产生一个新的文件
	#org.apache.log4j.WriterAppender : 将日志信息以流格式发送到任意指定的地方

#Layout : 日志输出格式 , Log4j提供的layout有以下几种 : 
	#org.apache.log4j.HTMLLayout : 以HTML表格形式布局
	#org.apache.log4j.PatternLayout : 可以灵活的指定布局模式
	#org.apache.log4j.SimpleLayout : 包含日志信息的级别和信息字符串
	#org.apache.log4j.TTCCLayout : 包含日志产生的时间,线程,类别等信息.
	
#打印参数 : Log4j采用类似C语言中print函数的打印格式格式化打印日志信息 : 
	# %m : 输出代码中指定的消息 .
	# %p : 输出优先级别,即DEBUG , INFO , WARN , ERROR , FATAL.
	# %r : 输出自应用启动到输出该log信息耗费的毫秒数.
	# %c : 输出所属的类目 , 通常就是所在类的全名.
	# %t : 输出产生该日志事件的线程名.
	# %n : 输出一个回车换行符 , windows平台为"/r/n" ,Linux平台为"/n" 
	# %d : 输出日志时间点的日期或时间,默认格式为"ISO8601",也可以在其后指定格式,比如:"%d{yyyy MM dd HH:mm:ss}",输出的类似于"2002年10月18日 22:10:28"
	# %l : 输出日志事件的发生位置,包含类目名,发生时间,发生的线程,以及在代码中的行数.

真实配置使用信息

注意 : 该配置可以直接使用,一天生成一个配置文件.
#####输出到控制台#####
log4j.rootLogger=DEBUG,CONSOLE,ARKSERVICES
log4j.addivity.org.apache=true
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %p %l - %m%n

#####输出到文件#####
log4j.appender.ARKSERVICES=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ARKSERVICES.DatePattern='.'yyyy-MM-dd
log4j.appender.ARKSERVICES.File=./testlog.log
log4j.appender.ARKSERVICES.Threshold=debug
log4j.appender.ARKSERVICES.layout=org.apache.log4j.PatternLayout
log4j.appender.ARKSERVICES.layout.ConversionPattern=%d %p - %m%n

限制log文件大小 和 log文件数量..
#####输出到控制台#####
log4j.rootLogger=DEBUG,CONSOLE,ARKSERVICES
log4j.addivity.org.apache=true
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %p %l - %m%n

#####输出到文件#####
log4j.appender.ARKSERVICES=org.apache.log4j.RollingFileAppender
log4j.appender.ARKSERVICES.File=./log/log4j.log
log4j.appender.ARKSERVICES.Threshold=DEBUG
log4j.appender.ARKSERVICES.MaxBackupIndex=3
log4j.appender.ARKSERVICES.MaxFileSize=100KB
log4j.appender.ARKSERVICES.layout=org.apache.log4j.PatternLayout
log4j.appender.ARKSERVICES.layout.ConversionPattern=%d %p %l - %m%n

有时候项目很大,有很多的模块怎么办?各自模块打印各自的日志

我这个日志有些不足之处,要是有更好的方法,请告诉我...

不同模块存放不同日志文件
log4j.rootCategory=debug, stdout
log4j.addivity.org.apache=true

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l - %m%n

log4j.logger.cxfframe=debug,cxfframe
log4j.appender.cxfframe=org.apache.log4j.DailyRollingFileAppender
log4j.appender.cxfframe.File=./log/cxfframe.log
log4j.appender.cxfframe.layout=org.apache.log4j.PatternLayout
log4j.appender.cxfframe.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l - %m%n
log4j.addivity.cxfframe=true

log4j.logger.gis=INFO,gis
log4j.appender.gis=org.apache.log4j.DailyRollingFileAppender
log4j.appender.gis.File=./log/gis.log
log4j.appender.gis.layout=org.apache.log4j.PatternLayout
log4j.appender.gis.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l - %m%n
log4j.addivity.gis=true
代码中如何使用呢?

加载是一样的,只是在调用的时候,这样子:

privatestatic final Logger logger = Logger.getLogger("gis");

参数传递的是模块名


代码加载例子log4j的jar包自己加哦....

public static void main(String[] args) {

	/* 普通使用Log4j的加载方法 */
	
	PropertyConfigurator.configure("./log4j.properties");
	Logger logger = Logger.getLogger(TestSlf4j.class);
	
	logger.info("456");
	logger.debug("123");
}


后面问题来了,线上程序有问题,需要定位,但是日志级别是info,想调整为debug,但又不能重启程序,怎么办呢?

给log4j配置一个监听器就好了,自动检测配置文件

Log4j 动态更新
在加载logger日志之后,加一个监听器就好了…
PropertyConfigurator.configure(log4jPath);
PropertyConfigurator .configureAndWatch(log4jPath,1000);

第二个参数是检查时间的间隔


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值