Log4j日志会降低应用程序性能吗?

hap*_*ppy 7 java logging log4j

日志记录是否会降低应用程 以及如何限制在日志文件中打印显示标签日志?

例如.我的日志文件有以下日志

[2012-06-20 15:52:06,290] org.displaytag.tags.TableTag isFirstIteration 684 - [data] first iteration=true (row number=1)
[2012-06-20 15:52:06,290] org.displaytag.tags.TableTag isFirstIteration 684 - [data] first iteration=true (row number=1)
[2012-06-20 15:52:06,290] org.displaytag.tags.TableTag isFirstIteration 684 - [data] first iteration=true (row number=1)
[2012-06-20 15:52:06,290] org.displaytag.tags.TableTag isFirstIteration 684 - [data] first iteration=true (row number=1)
Run Code Online (Sandbox Code Playgroud)

为什么以上是在日志文件中?

log.properties文件

# Log4j configuration file.
 log4j.rootCategory=DEBUG, A1
 # Available levels are DEBUG, INFO, WARN, ERROR, FATAL

 #
 # A1 is a ConsoleAppender 
 #

log4j.appender.A1 = org.apache.log4j.RollingFileAppender
log4j.appender.A1.File = C:/LogInfo/logfile.log
log4j.appender.A1.MaxFileSize = 100MB
log4j.appender.A1.MaxBackupIndex=50
log4j.appender.A1.layout = org.apache.log4j.PatternLayout
log4j.appender.A1.append = true
log4j.appender.A1.layout.ConversionPattern = [%d] %C %M %L - %m%n
log4j.appender.A1.Threshold = DEBUG
Run Code Online (Sandbox Code Playgroud)

如何停止(org.displaytag.tags.TableTag)这些日志打印在日志文件中

Ste*_*n C 9

日志记录是否会降低应用程

是.它的作用取决于许多因素; 见下文.

以及如何限制在日志文件中打印显示标签日志?

通过更改日志记录属性中的ConversionPattern

为什么以上是在日志文件中?

因为:

  1. 代码中的某个地方是debug(String)使用该消息调用Logger方法(可能)
  2. 您的日志记录属性将appender的日志记录阈值设置为DEBUG.

为了提高性能:

  1. 更改ConversionPattern以使用更便宜的日期/时间格式,并且(更重要的是)避免使用'C','F','L'和'M',因为它们特别昂贵.
  2. 将日志记录阈值更改为INFO或WARNING或ERROR以减少日志记录量,
  3. Logger.debug(...)调用放在一个if语句中,该语句检查是否启用了调试日志记录.这样可以节省在不需要的情况下组装日志消息的成本; 看在log4j的,并检查记录提高性能之前isDebugEnabled?.

    更新 - 使用log4j版本2时,记录方法上存在带有格式和参数的重载.这些可以减少在禁用级别进行日志记录时的开销.

您还可以在Logger级别限制日志记录...如log4j文档中所述.事实上,该文档回答了您提出的大多数问题,并且在日志记录性能和日志记录配置方面有很多详细信息.

  • @happy - 阅读手册...请参阅我的答案中的链接.这一切都在那里解释.(答案是不".) (3认同)