如何设置特定类和包的日志级别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置特定类和包的日志级别?相关的知识,希望对你有一定的参考价值。

这是我的log4j内容,它位于.properties文件中

logging.rootLogger=@DEBUG_LEVEL@, stdout, rollingFile, smtp
##logging.appender.stdout.Threshold=@DEBUG_LEVEL@
logging.appender.stdout=org.apache.log4j.ConsoleAppender
logging.appender.stdout.layout=org.apache.log4j.PatternLayout
logging.appender.stdout.layout.ConversionPattern=%d %-5p %c [%M:%L] %m%n

@ DEBUG_LEVEL @这是在单独的“appenv.bash”文件中设置的,对于不同的环境,它的设置方式不同。在生产中它被设置为ERROR,我想在特定类中使用INFO作为一种方法。如此INFO,DEBUG将不会在生产环境中显示。

如何在一个包中为一个特定类设置日志级别为INFO?

答案

你在这里声明了一个logger,即rootLogger。它是所有记录器的“父”,因此如果您需要细粒度配置,则必须声明更具体的记录器。

以下行为com.foo.bar包下的所有类创建一个记录器:

log4j.logger.com.foo=WARN, stdout

您的类必须以这种方式实例化记录器:

Logger logger = Logger.getLogger(MyClass.class.getCanonicalName());

但你可以在这里放任何字符串,例如:

log4j.logger.onlyoneclasswilluseit=WARN, stdout

并以这种方式得到它:

Logger logger = Logger.getLogger("onlyoneclasswilluseit");

以上是关于如何设置特定类和包的日志级别?的主要内容,如果未能解决你的问题,请参考以下文章

Java基础7:关于Java类和包的那些事

如何使用 Log4j 更改包的日志级别?

第五周日志模块正则和包

如何使用 Java 代码配置 Logback 以设置日志级别?

如何避免 Java 中的类和包之间的名称冲突?

如何设置日志记录级别名称?