【发布时间】:2017-08-25 02:35:30
【问题描述】:
我们知道,默认情况下,Grails 3.0 中的日志记录由 Logback 日志框架处理,并且可以使用 grails-app/conf/logback.groovy 文件进行配置。这样做的好处是该文件中的配置适用于 Logback 和 Log4j 实现(在 Grails 3.1.2 中成功测试)。在我们从 Grails 3.1.2 迁移到使用 Grails 3.2.8 之后(正如我之前所说),Log4j 似乎没有使用 logback.groovy 文件中的配置,它应该以其他方式配置 - 在运行时。
我对此进行了深入研究,以确保这确实是它现在的配置方式,并且似乎如果我使用默认的 Log4j 日志记录:
org.apache.log4j.Logger.getLogger("name").info("TEST");
根本不工作。要将信息填充到输出日志文件中,我应该使用默认的 SLF4J API:
org.slf4j.LoggerFactory.getLogger("name").info("TEST");
这里的问题是因为我们在代码中有很多地方使用 Log4j 方法实现了日志记录,而现在 - 日志文件中没有写入任何内容。
所以我在这里有两个问题。第一个 - 这是 Grails 实现这种行为的确切方式(官方文档中没有提到 - Grails 3.2.8 Documentation)。第二个 - 是 XML 或 RUNTIME 配置是配置 Log4j 的最佳方式,所以像以前一样使用它。如果是 - 这里的坏事是我们应该一次维护两个相同的配置。有没有其他方法可以配置 Log4j 以使用与 Grails Logger 相同的配置。
附:无需发布任何代码,都是默认配置。
非常感谢!
【问题讨论】: