每个java类中的记录器名称

时间:2016-10-14 11:06:48

标签: java logging log4j

我正在使用log4j2替换我的java应用程序中的旧日志系统。 我对记录器名称有点困惑。记录器名称与我们在xml文件中定义的名称相同,是否应与logmanager.getlogger (arg)的参数相同?

我也不知道是否应该在每个类的顶部定义记录器,它们是否应该有不同的名称? 例如,有一个包loginlogin.ui .

登录里面有5个文件(类),也是ui。我想记录整个登录包。但是我在如何定义loggers以及java文件的位置以及记录器名称应该具有哪些模式方面存在问题。

Logger logger = logmanager.getlogger( ? )

Logger对象可以在每个文件中使用相同的名称吗? 谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用

private static Logger logger = LogManager.getLogger( YourClassName.class )

如果您只设置了根记录器,那么这已经显示了来自那里的消息。 如果您希望将特定包中的记录器配置为与rootlogger不同(例如,不同的日志级别),则必须在log4j2的配置中创建一个名为该包的记录器。您可以参考log4j2配置手册,了解如何执行此操作。

该包和后续包中的所有类都将映射到该记录器。

示例:

Config具有root logger和logger" my.package"

然后使用LogManager.getLogger( YourClass.class )创建的记录器,其中YourClass位于包my.package或某个包my.package.xyz中,将使用记录器" my.package"。 使用例如LogManager.getLogger( "SPECIALLOGGER" )LogManager.getLogger( OtherPackageClass.class )创建的记录器,其中OtherPackageClass位于包" my.otherpackage"将退回到根记录器。

我还建议您查看log4j manual

答案 1 :(得分:-1)

查看项目Lombok以使用简单注释而不是声明记录器变量。