6



我正在开发一个多线程应用程序。我已经在使用 Log4j 将语句记录到文件中。
我最近一直在研究登录到 Mysql 数据库的可能性。

日志组件必须在重负载下可靠并且必须是线程安全的。
我听说过 SFL4J。我对 SLF4J 的理解是,它只是一个门面或抽象层。

  • 我想知道 SLF4J 是否是用于多线程应用程序的优秀数据库日志记录解决方案?

  • 并且在负载较重的情况下,添加一个层(如缓冲区或队列)并让线程记录到它而不是直接调用日志线程是一个好主意(日志线程将发送找到的语句在队列中一一到数据库)?

任何提示、最佳实践或代码示例将不胜感激,
问候,

4

1 回答 1

3

没错,SFL4J 只是一个外观,它允许库和框架的编写者通过外观进行日志记录,并让应用程序指定自己的日志记录框架。在应用程序级别没有使用 SLF4J 的令人信服的理由,您不妨直接使用 log4j。唯一的好处是您可以在未来的某个日期切换到 logback,而更改较少。这并不是那么引人注目,除非您不确定要使用哪个日志记录实现,在这种情况下,您可以使用抽象层,以便您可以在比较测试中交换实现。

使用 SLF4j 不会影响并发。您可能希望为实际的记录器考虑不同的附加程序(或滚动您自己的附加程序),但它不会影响您调用 SLF4J 的方式。唯一会影响并发的地方是 appender。

于 2012-10-31T13:43:22.773 回答