首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >登录可靠性

登录可靠性
EN

Stack Overflow用户
提问于 2011-10-07 07:10:49
回答 2查看 783关注 0票数 2

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

Logback更可靠吗?有没有可能在很短的时间内使用logback写入1000条日志消息(例如)时,它可能会默默地遗漏一些消息。谢谢,Sunil

EN

回答 2

Stack Overflow用户

发布于 2011-10-07 14:29:07

我认为Logback也是一个尽力而为的失败-停止日志系统。运行以下代码片段:

代码语言:javascript
复制
for (int i = 0; i < 8; i++) {
    System.out.println("log " + i);
    logger.info("log {}", i);
    Thread.sleep(2000);
}

使用FileAppender

代码语言:javascript
复制
<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文件的内容如下:

代码语言:javascript
复制
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丢失消息。从这个意义上说,我认为它是可靠的。但是如果你想做审计日志,我认为你应该使用其他的东西,而不是一个尽力而为的失败-停止日志系统。(如果攻击者找到了一种通过填充磁盘空间来禁用日志记录的方法,他可以在用户界面上执行所有操作,而无需任何审计日志,并注意到磁盘已满。)

票数 2
EN

Stack Overflow用户

发布于 2019-12-20 06:27:05

简短的回答是不,logback是不可靠的。如果你用其他日志框架,如log4j,log4j2,JUL等对它进行基准测试,它也是非常非常不可靠的。

事实上,Logback具有最高的性能,但为了这样做会丢弃一些日志事件。这是由于Logback的AsyncAppender的行为,如果队列变得80%已满,它会将事件丢弃到警告级别以下。

在快速和可靠的日志记录之间经常需要权衡。特别是Logback,通过丢弃大量事件来最大化性能,特别是当我们使用异步附加器时。Log4j 1.2.17和2.3倾向于更加保守,但不能提供几乎相同的性能提升。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7681498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档