如何为单个类指定日志记录级别

时间:2018-07-31 10:35:43

标签: java logging log4j java.util.logging

我有一个蚂蚁目标,它可以调用多个类来做多种事情。它使用“ logging.properties”文件定义日志记录级别和处理程序。

handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=INFO
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

java.util.logging.FileHandler.level=INFO
java.util.logging.FileHandler.pattern=logs/ant-logging.log

# Write 10MB before rotating this file
java.util.logging.FileHandler.limit=10000000

# Number of rotating files to be used
java.util.logging.FileHandler.count=4
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

.level=INFO 

现在,它调用的一个Java文件要花费大量时间才能完成。我无权访问此类,因此我想为该特定类设置特定的日志记录级别,以尝试了解实现的问题。

我不想更改全局日志记录级别,只想向特定的类添加特定的级别,该如何实现?

2 个答案:

答案 0 :(得分:0)

我相信您可以按类别指定并登录到其自己的特定附加器

例如,假设您的班级是com.test.FaultyClass

那你可以放

log4j.logger.com.test.FaultyClass=DEBUG, myappender

这将强制FaultyClass的输出不会显示在其他附加程序中

log4j.additivity.com.test.FaultyClass=false  

现在,您可以随意设置myappender

log4j.appender.myappender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myappender.datePattern='-'dd'.log'
log4j.appender.myappender.layout=org.apache.log4j.PatternLayout

答案 1 :(得分:0)

为记录器名称指定了记录级别。根据应用程序的一般编写方式,记录器名称可能与该类具有相同的名称,或者将使用某些模块名称

在属性文件中,您可以指定name of the logger

  

假定名称以“ .level”结尾的所有属性均定义Logger的日志级别。因此,“ foo.level”为命名为“ foo”的记录器定义了一个日志级别,并(递归地)为其命名层次结构中的任何子级定义了日志级别。日志级别按照在属性文件中定义的顺序应用。因此,树中子节点的级别设置应在其父节点设置之后进行。属性名称“ .level”可用于设置树根的级别。

例如:

foo.level=FINE

如果您不知道记录器的名称,则可以使用简单的格式化程序来capture the logger name记录消息的记录器。