在Log4j2中启用功能级别可配置的记录器



我想在应用程序的功能级别上实现一个记录器。因此,调试所需的日志何时何地,我可以打开并启动日志活动。例如,我只想为注册功能启用日志记录。

我不确定这是否可能,但我的要求是这样的。如果可能的话,请给出一个解决方案或任何值得赞赏的见解。

如果您使用slf4j/log4j API,这是一个您几乎可以得到的功能;免费";。如果您遵循为每个类创建记录器的标准做法,请使用以下行:

static Logger log = LoggerFactory.getLogger(UserRegistration.class);

并将该记录器用于该类中的所有日志记录。您还可以为每个日志调用(WARN、INFO、DEBUG等(选择适当的日志级别。然后,您可以在日志配置文件中为一个类上调/下调日志级别,并使用以下行:

<logger name="com.mycompany.util.registration.UserRegistration"><level value="DEBUG"/></logger>

您还可以通过以下行来上调/下调此类所属的整个模块的日志记录级别:

<logger name="com.mycompany.util.registration"><level value="DEBUG"/></logger>

您可以使用这样的配置行,通过将某些日志调用提升到您设置的默认日志级别以上来打开它们。您可以使用以下内容设置默认日志级别:

<root><level value="WARN" /></root>

因此,只要使用这些行,您就只能获得大部分代码的WARN级别日志记录,但对于这一个模块或类文件,您还可以获得INFO和DEBUG级别的日志记录。

您可以做更复杂的事情,比如将代码某些部分的日志记录发送到一个特殊的日志文件中。也许这就是你说你只想登录";注册功能";。您可以设置您的日志配置,以便只有";注册";被发送到一个特殊的文件中。

主要的一点是,你不需要事先想太多。您只需将每个类的名称附加到该类中进行的所有日志记录调用,并为每个日志记录调用选择适当的日志级别(WARN、INFO、DEBUG(,然后您可以通过日志记录配置文件决定您想看什么或不想看什么,以及您想将日志记录信息放在哪里。

您可以在程序首次启动时,甚至在程序运行时,使用API调用来更动态地配置日志记录。同样重要的是,您没有提前考虑要查看代码中哪些部分的详细日志记录。您只需将日志记录调用放在各处,然后决定以后实际看到的输出是哪一个

最新更新