Java模块 -- Logger日志的使用

来源:互联网 发布:听app数据 编辑:程序博客网 时间:2024/06/11 02:32

普通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,ARKSERVICESlog4j.addivity.org.apache=truelog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.Threshold=DEBUGlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=%d %p %l - %m%n#####输出到文件#####log4j.appender.ARKSERVICES=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.ARKSERVICES.DatePattern='.'yyyy-MM-ddlog4j.appender.ARKSERVICES.File=./testlog.loglog4j.appender.ARKSERVICES.Threshold=debuglog4j.appender.ARKSERVICES.layout=org.apache.log4j.PatternLayoutlog4j.appender.ARKSERVICES.layout.ConversionPattern=%d %p - %m%n

限制log文件大小 和 log文件数量..#####输出到控制台#####log4j.rootLogger=DEBUG,CONSOLE,ARKSERVICESlog4j.addivity.org.apache=truelog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.Threshold=DEBUGlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=%d %p %l - %m%n#####输出到文件#####log4j.appender.ARKSERVICES=org.apache.log4j.RollingFileAppenderlog4j.appender.ARKSERVICES.File=./log/log4j.loglog4j.appender.ARKSERVICES.Threshold=DEBUGlog4j.appender.ARKSERVICES.MaxBackupIndex=3log4j.appender.ARKSERVICES.MaxFileSize=100KBlog4j.appender.ARKSERVICES.layout=org.apache.log4j.PatternLayoutlog4j.appender.ARKSERVICES.layout.ConversionPattern=%d %p %l - %m%n

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

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

不同模块存放不同日志文件log4j.rootCategory=debug, stdoutlog4j.addivity.org.apache=truelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l - %m%nlog4j.logger.cxfframe=debug,cxfframelog4j.appender.cxfframe=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.cxfframe.File=./log/cxfframe.loglog4j.appender.cxfframe.layout=org.apache.log4j.PatternLayoutlog4j.appender.cxfframe.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l - %m%nlog4j.addivity.cxfframe=truelog4j.logger.gis=INFO,gislog4j.appender.gis=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.gis.File=./log/gis.loglog4j.appender.gis.layout=org.apache.log4j.PatternLayoutlog4j.appender.gis.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l - %m%nlog4j.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);

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