回溯可靠性

标签 logback

根据以下常见问题解答,Log4j 不可靠: http://logging.apache.org/log4j/1.2/faq.html#a1.2 “不。log4j 并不可靠。它是一个尽力而为的故障停止日志系统。”

Logback 更可靠吗?是否有可能,例如,当在很短的时间内使用 logback 写入 1000 条日志消息时,它可能会默默地错过一些消息。 谢谢, 苏尼尔

最佳答案

我认为 Logback 也是一个尽力而为的故障停止日志系统。运行此代码片段:

for (int i = 0; i < 8; i++) {
    System.out.println("log " + i);
    logger.info("log {}", i);
    Thread.sleep(2000);
}

使用FileAppender:

<appender name="file" class="ch.qos.logback.core.FileAppender">
    <file>/mnt/logtest/testlog.log</file>
    <append>false</append>
    <encoder>
        <pattern>%d [%thread] %level %mdc %logger{35} - %msg%n</pattern>
    </encoder>
</appender>

在没有可用空间的磁盘上。然后运行就没有任何错误。几秒钟后,我从磁盘上删除了一些文件。 teSTLog.log 文件的内容是:

2011-10-07 08:19:01,687 [main] INFO  logbacktest.LoopLog - log 5
2011-10-07 08:19:03,688 [main] INFO  logbacktest.LoopLog - log 6
2011-10-07 08:19:05,688 [main] INFO  logbacktest.LoopLog - log 7

文件中没有 log 0 - log 4 行。我不认为其他附加器更可靠。


在正常操作条件下(例如系统有足够的磁盘空间)我从未见过Logback丢失消息。从这个意义上说,我认为它是可靠的。但如果你想进行审计日志记录,我认为你应该使用其他东西,而不是尽力而为的故障停止日志记录系统。 (如果攻击者找到了一种通过填充磁盘空间来禁用日志记录的方法,他可以在用户界面上执行所有操作,而无需任何审核日志,并注意到磁盘已满。)

关于回溯可靠性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7681498/

相关文章:

java - logback 找不到 LoginAuthenticator

java - Gradle 配置不适用于两组配置文件和依赖项

java - Logback 是否需要类路径中的 Groovy?使用 logback.xml 而不是 logback.gorovy 进行配置

java - logback 根本不记录到控制台

java - 在 Eclipse 中为 slf4j/log4j 输出着色

java - 以编程方式在 logback 中添加附加程序

logback ThresholdFilter 如何做相反的事情

tomcat - Spring Boot - 忽略独立 Tomcat/外部 logback 文件

rest - 使用哪个 Logback Appender 通过 REST 接收器端点将新事件发送到 splunk?

java - 在java中打印logback日志或stacktrace中的对象ID