java - SLF4J 是否适合用于多线程应用程序以记录到数据库?

标签 java logging log4j slf4j



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

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

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

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

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

最佳答案

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

使用 SLF4j 不会影响并发。您可能想为实际的记录器考虑不同的 appender(或自己编写),但这不会影响您调用 SLF4J 的方式。唯一会影响并发的地方是在 appender 中。

关于java - SLF4J 是否适合用于多线程应用程序以记录到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13159141/

相关文章:

java - Sap hana 无效的表名

java - 我的调色板中的小部件标题(例如(TexField、布局、表单小部件以及图像和媒体))为空,我该如何解决此问题?178173

log4j - Spring集成中限制jsch的输出

java.sql.SQLException : Parameter index out of range (1 > number of parameters, 即 0)。我收到这个错误

java - 检查二维整数数组中是否存在一行是同一数组中其他两行的总和

java - 使用单个 log4j2 xml 文件配置 log4j2 和 log4j

java - 此 logback.xml 正在记录到文件但无法记录到控制台?

java - 需要关闭 Logger 的处理程序

logging - Spark : spark-submit won't take custom log4j. 属性

java - 我想通过log4j记录STORM日志并将日志发送到kafka。结果是kafka STORM可以自己记录日志log4j但不能发送日志到kafka