如何在我的 Gradle 项目中使用 slf4j 在 IntelliJ 中获取日志输出?
How do I get logging output in IntelliJ using slf4j in my Gradle project?
我正在开始一个 java 项目,使用 slf4j 进行日志记录,gradle 进行构建,使用 intellij 进行 IDE。当我 运行 项目时,如何让 intellij 在 IDE 中显示日志?
我一直在尝试找出如何将 slf4j-simple 放入类路径中而不在 build.gradle 中声明它。我认为将日志输出到 System.err 会使它们显示在 intellij 中。你认为这是在正确的轨道上吗?
如果您熟悉 slf4j,就会知道 slf4j 的目的是避免声明对日志记录框架的编译时依赖性。
为了显示输出,类路径中需要同时存在 slf4j-api 以及恰好一个 slf4j 实现绑定(例如 slf4j-simple 或 logback 或其他)。这意味着:
- 如果您正在编写某种库(供您维护的其他模块内部使用,或者 "for the public"),您应该只依赖 slf4j-api 而不要编译- 或 运行时间声明的实现绑定依赖。
- 如果您正在编写一些最终应用程序,则需要包括实现绑定依赖项,尽管它可能是 运行时间范围的而不是编译范围的。
如果您在 "run the project" 时期望 "see" 某些东西,那么:
- 这是某种库,您正在对您的库进行某种单元或集成测试,因此您应该在 中包含实现绑定依赖项(如 slf4j-simple) testing 类路径(以便您在测试时看到输出,但它不会被依赖于您的库的任何东西使用)。或者,
- 这是某种终端应用程序,因此应该有一个在编译或 运行时间范围内定义的实现绑定依赖项。如果您不确定最终要使用什么,没关系,只需选择现在使用的可以简单记录到控制台的东西,因为 SLF4J 可以在以后轻松替换它。许多日志记录框架很容易支持 "production" 的单独配置而不是测试,我认为让测试配置基本上只记录到控制台是相当普遍的。
IntelliJ IDEA 将自动显示打印到控制台的任何内容。此外,许多 运行 配置类型都有一个 "Log" 选项卡,可让您指定要扫描的日志文件,并在应用程序 运行 时显示。因此,如果您确实想要一个记录到多个文件等的测试日志记录配置,您通常可以将 IDEA 配置为能够让您在应用程序 运行ning.
我对 Maven 的经验比 Gradle 多得多,但我相信编译、运行时间和测试的依赖范围的概念可以相当直接地转换为 Gradle。请询问您是否需要更具体的说明。
我正在开始一个 java 项目,使用 slf4j 进行日志记录,gradle 进行构建,使用 intellij 进行 IDE。当我 运行 项目时,如何让 intellij 在 IDE 中显示日志?
我一直在尝试找出如何将 slf4j-simple 放入类路径中而不在 build.gradle 中声明它。我认为将日志输出到 System.err 会使它们显示在 intellij 中。你认为这是在正确的轨道上吗?
如果您熟悉 slf4j,就会知道 slf4j 的目的是避免声明对日志记录框架的编译时依赖性。
为了显示输出,类路径中需要同时存在 slf4j-api 以及恰好一个 slf4j 实现绑定(例如 slf4j-simple 或 logback 或其他)。这意味着:
- 如果您正在编写某种库(供您维护的其他模块内部使用,或者 "for the public"),您应该只依赖 slf4j-api 而不要编译- 或 运行时间声明的实现绑定依赖。
- 如果您正在编写一些最终应用程序,则需要包括实现绑定依赖项,尽管它可能是 运行时间范围的而不是编译范围的。
如果您在 "run the project" 时期望 "see" 某些东西,那么:
- 这是某种库,您正在对您的库进行某种单元或集成测试,因此您应该在 中包含实现绑定依赖项(如 slf4j-simple) testing 类路径(以便您在测试时看到输出,但它不会被依赖于您的库的任何东西使用)。或者,
- 这是某种终端应用程序,因此应该有一个在编译或 运行时间范围内定义的实现绑定依赖项。如果您不确定最终要使用什么,没关系,只需选择现在使用的可以简单记录到控制台的东西,因为 SLF4J 可以在以后轻松替换它。许多日志记录框架很容易支持 "production" 的单独配置而不是测试,我认为让测试配置基本上只记录到控制台是相当普遍的。
IntelliJ IDEA 将自动显示打印到控制台的任何内容。此外,许多 运行 配置类型都有一个 "Log" 选项卡,可让您指定要扫描的日志文件,并在应用程序 运行 时显示。因此,如果您确实想要一个记录到多个文件等的测试日志记录配置,您通常可以将 IDEA 配置为能够让您在应用程序 运行ning.
我对 Maven 的经验比 Gradle 多得多,但我相信编译、运行时间和测试的依赖范围的概念可以相当直接地转换为 Gradle。请询问您是否需要更具体的说明。