【发布时间】:2016-03-18 10:10:55
【问题描述】:
是否可以定义两个不同的 PatternLayouts 并依赖于它使用第一个或第二个的应用程序 LogLevel?
例子:
如果我使用默认的错误级别运行我的应用程序,它应该打印如下日志语句:
$java -jar myApp.jar param1=value1
Error Message 1
Error Message 2
但是如果我使用 INFO 或 DEBUG 运行我的应用程序,它应该打印日志语句,例如:
$java -jar myApp.jar --debug param1=value1
DEBUG | 18.03.2016 11:04:43,412 1058 | Debug Message 1
DEBUG | 18.03.2016 11:04:43,412 1058 | Debug Message 2
INFO | 18.03.2016 11:04:43,414 1060 | Info Message 1
ERROR | 18.03.2016 11:04:43,420 1066 | Error Message 1
ERROR | 18.03.2016 11:04:43,420 1066 | Error Message 2
如果参数--debug 或--info 在内部,我的应用程序正在切换全局LogLevel。默认为 ERROR。
我应该如何配置我的log4j2.xml 来完成这个?我找不到任何解决方案。作为参考我的commandLine parser 和util class 我在运行时切换LogLevel。
【问题讨论】:
-
我很难理解“以错误级别运行我的应用程序”的意思。为此,它意味着您将记录器(根记录器?)设置为错误级别。然后将其设置为调试,您编辑了文件以将级别重置为 INFO 或 DEBUG,此时您还可以编辑模式。但是让我们假设您使用系统属性来包含级别值。如果这样做,您可以使用模式选择器并根据系统属性选择模式。如果您尝试以其他方式执行此操作,请告诉我们。
-
请更新问题以包含应该产生您提到的结果的程序代码。
-
我更新了我的问题,希望现在更好。
-
我希望看看你的 Java 程序是什么样子的。
-
@RemkoPopma 我添加了吗?查看链接。
标签: log4j2