SLF4J是否适合在多线程应用程序中用于记录到数据库?

时间:2012-10-31 13:30:45

标签: java logging log4j slf4j



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

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

  • 我想知道SLF4J是否是一个好用的数据库记录解决方案 多线程应用程序?

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

非常感谢任何提示,最佳做法或代码示例 的问候,

1 个答案:

答案 0 :(得分:2)

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

如果您使用SLF4j,我认为它不会影响并发性。您可能想要为实际记录器考虑不同的appender(或自己动手),但这不会影响您调用SLF4J的方式。并发性受影响的唯一地方是appender。