将 SLF4J 的绑定切换为 Maven 中的运行时范围依赖项
Switching bindings for SLF4J as a runtime scoped dependency in Maven
考虑Simple Logging Facade (SLF4J) Java。作为背景,它通过一个简单的 外观模式 提供了一个 API,其方式是在运行时通过将所需的绑定添加到类路径来确定底层日志记录后端。它可能是标准的 java.util.logging、log4j、logback 或 tinylog.
客户端应用程序与日志记录后端的巧妙分离减少了特定应用程序与任何特定日志记录框架之间的耦合。这可以更容易地将新实现的客户端与已经选择日志记录后端的其他项目的现有代码集成。
所以考虑到日志 API SLF4J,编译你只需要 slf4j-api 和你应该避免包括任何特定的绑定,如 slf4j-log4j12 作为 compile 依赖项。
因此,slf4j-log4j12 是 runtime 作用域依赖而不是 compile 的良好候选者 依赖项,因为这将允许您在运行时在 slf4j 绑定 之间切换,而无需重新编译应用程序。
问:在Maven项目中,在运行时日志框架绑定之间的切换设置在哪里?有什么例子吗?
免责声明:我是SLF4J的作者
尽管文档讨论了在运行时更改日志记录 back-end,但 SLF4J 允许在 构建时间 时切换日志记录 back-ends 但不是在运行时.
考虑Simple Logging Facade (SLF4J) Java。作为背景,它通过一个简单的 外观模式 提供了一个 API,其方式是在运行时通过将所需的绑定添加到类路径来确定底层日志记录后端。它可能是标准的 java.util.logging、log4j、logback 或 tinylog.
客户端应用程序与日志记录后端的巧妙分离减少了特定应用程序与任何特定日志记录框架之间的耦合。这可以更容易地将新实现的客户端与已经选择日志记录后端的其他项目的现有代码集成。
所以考虑到日志 API SLF4J,编译你只需要 slf4j-api 和你应该避免包括任何特定的绑定,如 slf4j-log4j12 作为 compile 依赖项。
因此,slf4j-log4j12 是 runtime 作用域依赖而不是 compile 的良好候选者 依赖项,因为这将允许您在运行时在 slf4j 绑定 之间切换,而无需重新编译应用程序。
问:在Maven项目中,在运行时日志框架绑定之间的切换设置在哪里?有什么例子吗?
免责声明:我是SLF4J的作者
尽管文档讨论了在运行时更改日志记录 back-end,但 SLF4J 允许在 构建时间 时切换日志记录 back-ends 但不是在运行时.