我正在开发一个多线程应用程序。我已经在使用 Log4j 将语句记录到文件中。
我最近一直在研究登录到 Mysql 数据库的可能性。
日志记录组件必须在重负载下可靠并且必须是线程安全的。
我听说过 SFL4J。我对 SLF4J 的理解是它只是一个门面或抽象层。
- 我想知道 SLF4J 是否是一个很好的数据库日志记录解决方案,可以用于
多线程应用程序?
- 在负载很重的情况下,添加一个层(如缓冲区或队列)并让线程记录到它而不是直接调用记录线程(记录线程将发送将队列中找到的语句一条一条存入数据库)?
任何提示、最佳实践或代码示例将不胜感激,
此致,
最佳答案
你说得对,SFL4J 只是一个外观,它允许库和框架的编写者通过外观进行日志记录,并让应用程序指定自己的日志记录框架。在应用程序级别,没有令人信服的理由使用 SLF4J,您还不如直接使用 log4j。唯一的好处是您可以在将来以较少的更改切换到 logback。这并不是那么引人注目,除非您不确定要使用哪个日志记录实现,在这种情况下,您可以使用抽象层,以便可以在比较测试中换出实现。
使用 SLF4j 不会影响并发。您可能想为实际的记录器考虑不同的 appender(或自己编写),但这不会影响您调用 SLF4J 的方式。唯一会影响并发的地方是在 appender 中。
关于java - SLF4J 是否适合用于多线程应用程序以记录到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13159141/