log4j配置文件分析+代码示例
2012-09-17 15:09
302 查看
1. log4j 的log4j.properties在WPF里面是默认自带的,不需要自己再定义,在WEB-INF/configs底下。
2. Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。
3. log4j配置文件:
3.1 rootLogger相当于java当中的object,其它的logger去继承它。
log4j.rootLogger=INFO, stdout ,R,语法为:#log4j.rootLogger = [ level ] , appenderName, appenderName。这里的INFO表示log的级别是INFO,所以debug就会被忽略掉。#appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。
但,stdout和R又是什么呢?这个名字是随便取的,你可以叫它A
3.1.1 其中,Log4j提供的appender有以下几种:
#org.apache.log4j.ConsoleAppender(控制台),
#org.apache.log4j.FileAppender(文件),
#org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
#org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
#org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方
3.1.2 Log4j提供的layout有以下几种:
#org.apache.log4j.HTMLLayout(以HTML表格形式布局),
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
#org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
#org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
3.1.3 当调试系统时,我们往往注意的只是异常级别的日志输出,但是通常所有级别的输出都是放在一个文件里的,如果日志输出的级别是BUG!?那就慢慢去找吧。
这时我们也许会想要是能把异常信息单独输出到一个文件里该多好啊。当然可以,Log4j已经提供了这样的功能,我们只需要在配置中修改Appender的Threshold 就能实现。如上例中R就是为了把ERROR以上的错误输出到一个单独的文件中。
4. log4j的注意事项:
debug的时候要用:
原因: 为了优化性能。
当输出级别是debug,即需要进行日志信息输出时,加不加这句if判断,效果是一样的;
当输出级别高于debug,即不需要进行日志信息输出时:
①假如debug方法中的参数比较简单时(比如直接就是写好的字符串),加不加这句if判断,在效率上也几乎没有什么差别;
②假如debug方法中的参数比较复杂时(比如还要使用别的函数进行计算、或者还要进行字符串的拼接等等),在前面就加上这句if判断,会让效率提高(否则,开始大动干戈做了很多事情(比如字符串的拼接),后来才发现不需要进行输出日志信息)。 因为是log.debug这句话是先进行()里的字符串的运算的,运算好了才进行log.debug,如果这时候才发现是INFO或者ERROR级别的,不需要输入,那就很浪费效率了。
5. log4j使用实例:
2. Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。
3. log4j配置文件:
#all logger output level is DEBUG and output position is stdout log4j.rootLogger=DEBUG, stdout ,R ////这一句指定了日志输出的级别为debug,stout和R分别代表日志输出到什么地方。 #log4j.appender is set output postion #log4j.logger is set some package(some package your want output logger specially)=[output level],[...output position] #in the console log4j.appender.stdout=org.apache.log4j.ConsoleAppender #config stdout position output contain INFO level and up log4j.appender.stdout.Threshold=DEBUG //stout的输入级别 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] %l:%t - %m %n #in the daily files log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.Threshold=ERROR log4j.appender.R.File=${root.path}/log/EmailInterface.log log4j.appender.R.DatePattern='.'yyyy-MM-dd'.log' log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d [%-5p] %l:%t - %m %n log4j.logger.com.statestr=DEBUG //指定特定包的输出级别,即com.statestreet的包都是DEBUG级别
3.1 rootLogger相当于java当中的object,其它的logger去继承它。
log4j.rootLogger=INFO, stdout ,R,语法为:#log4j.rootLogger = [ level ] , appenderName, appenderName。这里的INFO表示log的级别是INFO,所以debug就会被忽略掉。#appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。
但,stdout和R又是什么呢?这个名字是随便取的,你可以叫它A
3.1.1 其中,Log4j提供的appender有以下几种:
#org.apache.log4j.ConsoleAppender(控制台),
#org.apache.log4j.FileAppender(文件),
#org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
#org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
#org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方
3.1.2 Log4j提供的layout有以下几种:
#org.apache.log4j.HTMLLayout(以HTML表格形式布局),
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
#org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
#org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
3.1.3 当调试系统时,我们往往注意的只是异常级别的日志输出,但是通常所有级别的输出都是放在一个文件里的,如果日志输出的级别是BUG!?那就慢慢去找吧。
这时我们也许会想要是能把异常信息单独输出到一个文件里该多好啊。当然可以,Log4j已经提供了这样的功能,我们只需要在配置中修改Appender的Threshold 就能实现。如上例中R就是为了把ERROR以上的错误输出到一个单独的文件中。
4. log4j的注意事项:
debug的时候要用:
if (log.isDebugEnabled()) { log.debug("updateBidAuction:" + bidAuction); }
原因: 为了优化性能。
当输出级别是debug,即需要进行日志信息输出时,加不加这句if判断,效果是一样的;
当输出级别高于debug,即不需要进行日志信息输出时:
①假如debug方法中的参数比较简单时(比如直接就是写好的字符串),加不加这句if判断,在效率上也几乎没有什么差别;
②假如debug方法中的参数比较复杂时(比如还要使用别的函数进行计算、或者还要进行字符串的拼接等等),在前面就加上这句if判断,会让效率提高(否则,开始大动干戈做了很多事情(比如字符串的拼接),后来才发现不需要进行输出日志信息)。 因为是log.debug这句话是先进行()里的字符串的运算的,运算好了才进行log.debug,如果这时候才发现是INFO或者ERROR级别的,不需要输入,那就很浪费效率了。
5. log4j使用实例:
public class LogTest { static { PropertyConfigurator.configure("log4j.properties"); } static Logger logger = Logger.getLogger(LogTest.class); public static void main(String[] args) { logger.info("Entering application."); logger.debug("debug"); logger.error(constructError()); logger.fatal("fatal"); logger.info("Exiting application."); } private static String constructError() { return "error"; } }
相关文章推荐
- 【Nutch2.2.1源代码分析之4】Nutch加载配置文件的方法
- Log4j按级别输出日志到不同文件配置分析
- 【Nutch2.2.1源代码分析之4】Nutch加载配置文件的方法
- Spring+mybatis 框架(配置文件、代码示例)
- scrapy 示例代码及配置文件
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- Log4j按级别输出日志到不同文件配置分析
- 使用spring工厂读取property配置文件示例代码
- 从源码角度深入分析log4j配置文件使用
- struts简单例子的分析(含代码注释和配置文件说明)
- log4j配置文件相对位置分析
- log4j.properties,log4j.xml配置文件的配置示例
- log4j源码简要分析 | 读取配置文件
- log4j中配置日志文件相对路径方法分析
- struts简单例子的分析(含代码注释和配置文件说明)
- Launcher 在配置文件中配置桌面快捷方式->代码分析
- log4j配置文件分析
- struts简单例子的分析(含代码注释和配置文件说明)
- 一个Log4j配置文件的实战示例
- ASP.NET 2.0 读取配置文件[INI](示例代码下载)