2017-02-12 58 views
0

我希望Logger可以实现我的自定义日志记录级别方法。例如,我想致电log.custom("custom level log")。根据documentation这是可能的,但没有足够的提示给我。有人能帮助我理解这个命令究竟做了什么吗?Log4j-2自定义日志级别代码生成器

java -cp log4j-core-2.8.jar \ 
    org.apache.logging.log4j.core.tools.Generate$ExtendedLogger \ 
    com.mycomp.ExtLogger DIAG=350 NOTICE=450 VERBOSE=550 > com/mycomp/ExtLogger.java 

此命令成功退出后应执行哪些步骤?我应该换什么,在哪里?

回答

1

该工具的功能是生成可以包含在项目中的源代码。目的是使用生成的类而不是标准的Log4j2 Logger。

在运行该工具之前,您需要决定相对于现有级别决定要调用的自定义级别以及它们的排名。手册页显示一个包含内置级别的int值的表格。您的自定义级别的int值可能会介于这些值之间。

在引用的示例中,该工具将在com.mycomp包中生成一个名为ExtLogger的类,该包用三个自定义级别(DIAG,NOTICE和VERBOSE)扩展标准Log4j2记录器。 DIAG的int值是350,所以它位于WARN(300)和INFO(400)之间。

该工具将生成的源代码写入控制台。该示例显示了如何将该输出重定向到文件。然后你可以在你的项目中包含这个文件。

+0

谢谢你的详细解答。你能检查这个错误吗? https://gist.github.com/sdwsk/47b86d243023b1583d340889a89639f6 – Sebastian

+0

我注意到一些奇怪的东西:错误消息说'Generate'类没有main方法,但是你要执行的是'Generate $ ExtendedLogger'内部类。内部类_does_有一个主要方法。也许命令行将'$ Extended'解释为一个环境变量。你可以尝试引用完全合格的类名吗? –

+0

我创建了https://issues.apache.org/jira/browse/LOG4J2-1814来解决这个问题。 –