开启log4j的记录源代码行号的配置,会对系统性能产生影响!
2008-06-08 14:58
323 查看
.CodeFormat {font-family:"Courier New", Courier, mono; font-size:10pt; }今天看到一篇文章,谈Log4j对系统的效能的影响...整理如下:
一般,我们用log4j写log的时候,很习惯于如下面记录:
这里会把Java Source Code中的行号带出来,查找错误很方便...
但,这也是问题之所在...文章中介绍,Log4j之所以可以得到行号,是用了JVM的一个特性,不知道大家有没有注意到,如果我们的Java程序在运行时出现错误,会出现下面的信息:
看到黑体字没有,原来JVM已经内嵌支持Debug出行号信息了!可是,这里是出错的时候,JVM抛出的,那为什么用 log4j.info() 的时候,也可以看到行号呢?
下面就是重点,Log4j中记录行号的过程...
但是,请注意,建立运行时的堆栈跟踪,对JVM来说,是一项非常大的开销!
所以,我们在配置log4j的PatternLayout的时候,如果是要上线到正式环境,一定要记者把参数关掉,
一般来说,用 “%d %-5p %m%n" 就可以满足了!
原文请参考这里:Sneaky, sneaky Log4J
===========================================================================
补遗篇~~~~~!
log4j.rootLogger=info, Console
log4j.logger.net.csdn.blog.xport=debug, RollingFile
log4j.additivity.net.csdn.blog.xport=false
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d %-5p [%t] %C{1} - %m%n
log4j.appender.RollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.RollingFile.File=SystemLog.log
log4j.appender.RollingFile.Append=true
log4j.appender.RollingFile.MaxFileSize=2MB
log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern=%d %-5p [%t] %C{1} - %m%n
一般,我们用log4j写log的时候,很习惯于如下面记录:
2005-01-11 09:57:57,816 DEBUG (BizProc.java:275) Begin to get connection... 2005-01-11 09:57:57,816 DEBUG (BizProc.java:275) Obtain connection 2345@defd 2005-01-11 09:57:57,816 DEBUG (BizProc.java:275) Begin transaction [TX_2015_RECV] processing... 2005-01-11 09:57:57,925 DEBUG (BizProc.java:328) All of the values were: |
但,这也是问题之所在...文章中介绍,Log4j之所以可以得到行号,是用了JVM的一个特性,不知道大家有没有注意到,如果我们的Java程序在运行时出现错误,会出现下面的信息:
javax.naming.NamingException: Cannot create resource instance at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:189) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301) at org.apache.naming.NamingContext.lookup(NamingContext.java:834) at org.apache.naming.NamingContext.lookup(NamingContext.java:181) at org.apache.naming.NamingContext.lookup(NamingContext.java:822) at org.apache.naming.NamingContext.lookup(NamingContext.java:181) at org.apache.naming.NamingContext.lookup(NamingContext.java:822) at org.apache.naming.NamingContext.lookup(NamingContext.java:181) at org.apache.naming.NamingContext.lookup(NamingContext.java:822) at org.apache.naming.NamingContext.lookup(NamingContext.java:194) at org.apache.naming.SelectorContext.lookup(SelectorContext.java:183) at javax.naming.InitialContext.lookup(InitialContext.java:347) |
下面就是重点,Log4j中记录行号的过程...
(1) 调用了 log4j.info() 或是log4j.debug()方法... (2) 建立一个 Throwable的对象来取得当前运行堆栈的快照... Throwable.fillInStackTrace(); (3) 从抛出的Throwable对象中,来分析出当前log信息的行号... |
所以,我们在配置log4j的PatternLayout的时候,如果是要上线到正式环境,一定要记者把参数关掉,
一般来说,用 “%d %-5p %m%n" 就可以满足了!
原文请参考这里:Sneaky, sneaky Log4J
===========================================================================
补遗篇~~~~~!
log4j.rootLogger=info, Console
log4j.logger.net.csdn.blog.xport=debug, RollingFile
log4j.additivity.net.csdn.blog.xport=false
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d %-5p [%t] %C{1} - %m%n
log4j.appender.RollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.RollingFile.File=SystemLog.log
log4j.appender.RollingFile.Append=true
log4j.appender.RollingFile.MaxFileSize=2MB
log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern=%d %-5p [%t] %C{1} - %m%n
相关文章推荐
- 开启log4j的记录源代码行号的配置,会对系统性能产生影响!
- 开启log4j的记录源代码行号的配置,会对系统性能产生影响!
- 开启log4j的记录源代码行号的配置,会对系统性能产生影响!
- AIX 6.1 参数配置分析和建议-关闭影响性能的系统程序
- Java学习-007-Log4J 日志记录配置文件详解及实例源代码
- 在php.ini中safe_mode开启之后对于PHP系统函数有什么影响呢?
- 影响MySQL性能的五大配置参数
- mysql服务性能优化—my.cnf配置说明详解(再次记录下,老是忘掉)
- 一步步打造基于ASP.NET的CMS内容管理系统--Step2 系统配置(附源代码)
- 安卓系统监听应用开启和关闭的实现和内存泄露记录
- GlusterFS分布式集群文件系统安装、配置及性能测试
- 开启 NFS 文件系统提升 Vagrant 共享目录的性能
- WEB系统启动时加载Log4j的配置文件(自己写Listener形式)
- 如何在mac系统下 开启(配置)有道词典的屏幕划词(句)
- 记录学习的点滴(MyBatis log4j日志输出配置)
- 阿里云服务器apache配置SSL证书成功开启Https(记录趟过的各种坑)
- 有效Log4j按指定级别定向输出日志到指定的输出文件地址配置Threshold,log4j中如何屏蔽父logger输出源rootlogger的additivity配置,log4j向多个文件记录日志
- log4j每日产生一文件配置
- [原创]ALSA 音频系统源代码分析: ALSA library 分析 --- 配置系统(二)
- log4j2配置实例[按小时记录日志文件]