java - 如何在我的 Gradle 项目中使用 slf4j 在 IntelliJ 中获取日志记录输出?

标签 java logging intellij-idea gradle slf4j

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

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

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

最佳答案

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

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

  • 如果您希望在“运行项目”时“看到”某些东西,那么:
  • 这是某种库,您正在对库进行某种单元或集成测试,因此您应该在测试类路径中包含实现绑定(bind)依赖项(如 slf4j-simple)(以便在测试时看到输出,但它不被任何依赖于你的库的东西使用)。或者,
  • 这是某种最终应用程序,因此应该在编译或运行时范围内定义实现绑定(bind)依赖项。如果您不确定最终要使用什么,那很好,只需选择现在使用的可以简单记录到控制台的东西,因为 SLF4J 可以在以后轻松替换。许多日志框架很容易支持为“生产”而不是测试单独配置,我认为让测试配置基本上只是登录到控制台是相当普遍的。

  • IntelliJ IDEA 将自动显示打印到控制台的任何内容。此外,许多运行配置类型都有一个“日志”选项卡,可让您指定要扫描的日志文件,并在应用程序运行时显示。因此,如果您确实想要一个测试日志配置,该配置可以记录到多个文件等,您通常可以配置 IDEA 以让您在应用程序运行时也能看到这些配置。

    我对 Maven 的体验比对 Gradle 的体验要多得多,但我相信编译、运行时和测试的依赖范围的概念可以相当直接地转化为 Gradle。请询问您是否需要更具体的说明。

    关于java - 如何在我的 Gradle 项目中使用 slf4j 在 IntelliJ 中获取日志记录输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38427892/

    相关文章:

    r - IntelliJ IDEA 中的 "The R Interpreter"设置是什么?

    java - 插入 MySQL Java

    java - 将 SHA-512 哈希从 Java 转换为 Bash

    java - 代码中的 JGit 代理配置

    java - Log4j:如何为多个appender定义通用布局和ConversionPattern

    一个应用程序中的 java.util.logging.Logger 和 org.apache.log4j.Logger - 第一个会记录为 log4j 吗?

    java - 在 IntelliJ 中,如何使用 Shift + F1 在浏览器中查看生成的文档

    java - 如何将 google app engine cron 作业路由到模块和版本

    java - 寻找使用 PrintWriter 的指南

    elasticsearch - 如何不使用文件节拍将日志获取到logstash服务器