当前位置: 首页 > 知识库问答 >
问题:

是否可以在命令行上配置日志记录程序级别?

宣冥夜
2023-03-14

Log4J允许您通过命令行,例如“-dlog4j.logger.com.whatever.myclass=debug”,通过您希望应用程序中的特定记录器进行日志记录的级别。我在logback找不到任何类似的设施。根据FAQ,它似乎允许您做的只是通过使用变量替换来设置根记录器的级别。是我遗漏了什么,还是登录不支持这个?谢了。

共有1个答案

欧阳正德
2023-03-14

是的,似乎没有这样的特征。据我所知,这部分是因为回滚配置更加复杂,因此很难通过平面字符串属性实现合理的配置灵活性。部分原因是,它鼓励了不良的做法--放置太多的系统属性--导致运行脚本或命令行臃肿,比单独的日志配置文件更难管理。

然而,我可以提出几个选择:

  • 在logback.xml配置文件中使用${sys.prop.var.name}替换
  • 在本地复制logback.xml,用所需的记录器级别修改它,并指定-dlogback.configurationfile=/path/to/customised/logback.xml。请记住“Logback-Classic可以扫描其配置文件中的更改,并在配置文件更改时自动重新配置它自己”。因此,您甚至不需要重新启动进程来更改日志记录级别。
  • DIY:在应用程序中添加一段代码,该代码将读取系统属性,并在启动期间将这些属性应用到日志记录级别。
 类似资料:
  • 在我的工作中,我们开始使用flyway,数据库管理员问我flyway是否有日志。在阅读了一些关于互联网和flyway文档的文章后,我没有找到一种方法来进行这种配置。 在StackOverflow上,一些用户说只需要将log4j放在类路径上就可以了。我尝试放置log4j文件但对我不起作用,但是当我尝试将SLF4J的文件放在flyway(类路径)的lib目录时: slf4j-api-1.7.21.ja

  • 我刚刚在我的应用程序中实现了日志记录,我想知道是否有一种方法来检查日志记录程序是否为空。 我想到的是在我的脚本中设置两个处理程序: 一个用于带有级别的控制台 一个用于级别为的文件 在脚本的末尾,我需要检查logger是否不为空。这意味着在运行期间,记录了一些的消息,在这种情况下,我希望通过将调试级别的日志文件发送到我的邮箱。 这种检查在脚本本身中是否可能,而不需要shell重定向到文件?

  • 问题内容: 我正在使用Python的机制将输出打印到屏幕上。我可以使用print语句来做到这一点,但是我想允许用户调整更好的粒度以禁用某些类型的输出。我喜欢为错误打印的格式,但是当输出级别为“信息”时,我希望使用更简单的格式。 例如: 在此示例中,我希望以不同的方式打印错误的格式: 是否可以在没有多个日志记录对象的情况下针对不同的日志级别使用不同的格式?我宁愿在创建记录器后就不修改它,因为有大量的

  • 问题内容: 我有一个要登录的Maven&Spring应用程序。我热衷于使用SLF4J。 我想将所有配置文件放入包含log4j.xml的目录{classpath} / config中,然后使用spring bean进行初始化。 例如 但是,我得到此警告,没有日志记录。 log4j:WARN找不到记录器的附加程序(org.springframework.context.support.ClassPat

  • 我正在使用Selenium3.4和FirefoxDriver(而不是marionette/GeckoDriver)为一个Java/Maven项目运行测试。我已经安装了Firefox45.9.0。我们的测试代码使用Log4j2,我可以将日志级别设置为任何我喜欢的级别,但是无论我将其设置为什么,我都会在控制台中得到如下所示的日志消息: 看起来FirefoxDriver内部或Firefox自身内部的某些

  • WebSphere8.5-我在2个节点上设置了一个集群,每个节点上设置了两个服务器,总共有4个服务器JVM。一个应用程序部署在集群上,所以基本上运行在所有4台服务器上。 根据IBM WAS8.5,我的应用程序日志应该位于以下所有4个服务器日志位置, 但它是在配置文件级别生成的 我只有2组日志,而不是4组日志。是否有任何配置,以便在服务器级别生成应用程序日志?这将帮助我分析哪个服务器在服务外部请求。