如何在Gradle项目中使用slf4j在IntelliJ中获取日志输出?

时间:2016-07-18 02:42:31

标签: java logging intellij-idea gradle slf4j

我正在启动一个java项目,使用slf4j进行日志记录,gradle进行构建,使用intellij进行IDE。在运行项目时,如何让intellij在IDE中显示日志?

我一直试图找出如何在类路径中放入slf4j-simple而不在build.gradle中声明它。我认为将日志输出到System.err会使它们显示在intellij中。你认为这是在正确的轨道上吗?

如果您熟悉slf4j,您知道slf4j的重点是避免在日志记录框架上声明编译时依赖性。

1 个答案:

答案 0 :(得分:0)

为了显示输出,需要在类路径中同时存在slf4j-api以及一个slf4j实现绑定(例如slf4j-simple或logback或其他)。这意味着:

  • 如果您正在编写某种类型的库(供您维护的其他模块内部使用,或者#34;对于公众"),您应该只依赖于slf4j-api并且没有编译或运行时声明的实现绑定依赖。
  • 如果你正在编写一些最终应用程序,你需要包含实现绑定依赖项,尽管它可能是运行时范围而不是编译范围。

如果您期望"请参阅"当你"运行项目"然后是:

  1. 这是某种类型的库,您正在对库进行某种单元或集成测试,因此您应该在测试<中包含一个实现绑定依赖项(如slf4j-simple) / em> classpath(这样你可以在测试时看到输出,但它不会被你的库所依赖的任何东西使用)。或者,
  2. 这是某种终端应用程序,因此应该在编译或运行时作用域中定义实现绑定依赖项。如果您不确定最终要使用什么,那很好,只需选择一些可以简单记录到控制台的东西,因为SLF4J可以让以后更容易更换。许多日志记录框架很容易支持单独配置&#34;生产&#34;与测试相反,我认为测试配置基本上只是登录到控制台是相当普遍的。
  3. IntelliJ IDEA将自动显示打印到控制台的任何内容。此外,许多运行配置类型都有一个&#34; Log&#34;允许指定要扫描的日志文件并在运行应用程序时显示的选项卡。因此,如果您确实需要一个记录到多个文件等的测试日志记录配置,您通常可以配置IDEA,以便在应用程序运行时能够看到它们。

    我对Maven的经验远不如使用Gradle,但我相信编译,运行时和测试的依赖范围的概念相当直接地转换为Gradle。请询问您是否需要更具体的说明。