log4j使用全接触

log4j是apache.logging(http://logging.apache.org/) 接口的一个java版本实现,还有log4net、log4Cxx等实现。java

整个日志器组件由三个子组件构成:数据库

一、Logger组件,负责按照级别进行输出apache

二、Appender组件:负责控制输出的目的地,如控制台,日志文件,数据库,网络等。网络

三、Layout组件:负责控制输出日志数据的格式,如:SimpleLayout。app

原理性演示代码:ide


Logger rootLogger=Logger.getRootLogger();//获取根日志器
rootLogger.setLevel(Level.INFO);//设定日志级别
/*
 * trace
* debug
* info
* warn
* error
* fatal
*/
Logger logger=Logger.getLogger("com.yu");//标识为com.yu 的日志器(继承根日志器)
                                                                                                   
Logger logger1=Logger.getLogger("com.yu");
System.out.println(logger==logger1);//标识符相同,日志器相同
Logger itemLogger=Logger.getLogger("com.yu.item");//标识为com.yu.item 的日志器,注意名称规则(继承)
                                                                                                   
                                                                                                   
Appender a=new ConsoleAppender();//一个日志目标(控制台方向)
Layout lay=new SimpleLayout();//一个格式化器
a.setLayout(lay);
logger.addAppender(a);
//不能输出,由于根日志器的级别debug<info
logger.debug("degug");
//输出,由于根日志器的级别warn>info
logger.warn("warn");
//输出,由于根日志器的级别warn>info
itemLogger.warn("item warn...");


开发中,咱们须要以配置的方式使用log4j,为此能够在项目的classpath中加入文件(log4j.properties)spa

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=debug, A1
# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

能够观察到:Logger为root,Appender为PatternLayout,Layout为PatternLayout。debug

代码以下:日志

//PropertyConfigurator.configure("log4j.properties");该行能够省略,默认读取classpath:log4j.properties
        Logger logger=Logger.getLogger("com.yu");//获取的任何日志器都是根日志器的子类对象
        logger.warn("hello");//是否能够输出,取决于"log4j.rootLogger=error, A1"


更多的日志文件演示orm

log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
# Print the date in ISO 8601 format
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN
输出形式以下:
2000-09-07 14:07:41,508 [main] INFO  MyApp - Entering application.
2000-09-07 14:07:41,529 [main] INFO  MyApp - Exiting application.



log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
相关文章
相关标签/搜索