log4j配制及使用详解

        log4j是我们常用的一个日志框架,要学习log4j的配制及如何使用,我们有没有想过它是什么,有哪些内容,怎么用呢。好,带着这些问题我们开始。

1、它是什么?

        简单来说:就是一个开源的、轻量级的、用于日志管理的框架。   

        通过使用Log4j,可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器等;也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

2、有哪些内容?

        Log4j由三个重要的组件构成: 日志信息的输出格式,日志信息的优先级, 日志信息的输出目的地。日志信息的优先级用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容 。

        Log4j有如下级别:

        OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。(级别低的输出时,包含了级别高的信息)

        输出源:

        Log4j允许日志请求被输出到多个输出源。用Log4j的话说,一个输出源被称做一个Appender 。一个logger可以设置超过一个的appender。

        常见Appender:
        org.apache.log4j.ConsoleAppender(控制台)
        org.apache.log4j.FileAppender(文件)
        org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
        org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
        org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
        org.apache.log4j.jdbc.JDBCAppender(把日志用JDBC记录到数据库中)

        最常用的PatternLayout:

        %m 输出代码中指定的消息
        %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
        %r 输出自应用启动到输出该log信息耗费的毫秒数
        %c 输出所属的类目,通常就是所在类的全名
        %t 输出产生该日志事件的线程名
        %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
        %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日22:10:28,921
        %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数

3、怎么用?(重点

        创建项目java项目,引用log4j包,编写配制文件,编写测试方法,代码结构如下:

        log4j.properties配制文件内容如下:

#one
#log4j.rootLogger = warn,test.Console
#tow
#log4j.logger.cn.java = warn,test.File
#three
log4j.logger.mytest = warn,test.File

#console
log4j.appender.test.Console=org.apache.log4j.ConsoleAppender 
log4j.appender.test.Console.layout=org.apache.log4j.PatternLayout    
log4j.appender.test.Console.layout.ConversionPattern=%d{HH:mm:ss,SSS} %5p (%C:%M) - %m%n

#file
log4j.appender.test.File=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.test.File.file=mylog.log
log4j.appender.test.File.DatePattern=.yyyy-MM-dd
log4j.appender.test.File.layout=org.apache.log4j.PatternLayout
log4j.appender.test.File.layout.ConversionPattern=%d{HH:mm:ss,SSS} %5p (%C:%M) - %m%n

说明:log4j.properties内容都是key与value的对应,当然key自然就不能重复了。

#one #two #three代表三种logger的定义方式。

第一种代表全局,针对你所写的所有java代码,在你不指定引用哪个logger控制时,则默认采用它。

第二种是类的路径,在相应类下引用logger进行日志输出时,则会采用它进行相应的日志输出。

第三种是别名方式,给指定的类进行日志输出时,你可以直接利用别名取logger即可。

log4j.appender代表你需要将日志以什么样的格式,输出到哪里,每一个输出源则(appender)可以定义它自己的输出格式,如文件,控制台输出。而log4j.logger本质是一个控制单元,将指定级别的日志以指定输出源(appender)进行处理。

说完前面的配制,那具体来看下测试代码:

public class Test {
	//private static final Logger logger = Logger.getLogger(Test.class);//取类路径
	private static final Logger logger = Logger.getLogger("mytest");//取logger后的别名mytest
	
	public static void main(String args[]){
		logger.debug("debug");//级别由低到高
		logger.info("info");
		logger.warn("warn");
		logger.error("error");
	}
}

运行之后,刷新项目,可以看到项目根目录下的日志文件,输出内容如下:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值