我正在使用log4j2
替换我的java应用程序中的旧日志系统。
我对记录器名称有点困惑。记录器名称与我们在xml文件中定义的名称相同,是否应与logmanager.getlogger (arg)
的参数相同?
我也不知道是否应该在每个类的顶部定义记录器,它们是否应该有不同的名称?
例如,有一个包login
和login.ui .
登录里面有5个文件(类),也是ui。我想记录整个登录包。但是我在如何定义loggers
以及java文件的位置以及记录器名称应该具有哪些模式方面存在问题。
Logger logger = logmanager.getlogger( ? )
Logger
对象可以在每个文件中使用相同的名称吗?
谢谢。
答案 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以使用简单注释而不是声明记录器变量。