java log丢失_java – Logback丢失我的日志消息到文件

我编写了一个测试程序来验证log4j上logback的性能改进.但令我惊讶的是,我遇到了这个奇怪的问题.我正在使用其Async和文件追加程序将一些200k日志消息循环写入文件.但是,每次,它只记录大约140k左右的消息并在此之后停止.它只打印我的上一个日志语句,表明它已将所有内容写入缓冲区并且程序终止.如果我只使用Log4j运行相同的程序,我可以在日志文件中看到所有200k消息.是否有任何基本的架构差异使这种情况发生?反正有没有避免它?我们正在考虑从log4j切换到logback,现在这让我重新思考.

这是我的logback configuraiton:

%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n

logback.log

%date %level [%thread] %logger{10} [%file:%line] %msg%n

这是我的代码——————

public static void main(String[] args) throws InterruptedException {

org.slf4j.Logger logbackLogger = LoggerFactory

.getLogger(LogbackTest.class);

List runs = Arrays.asList(1000, 5000, 50000, 200000);

ArrayList logbackRuntimes = new ArrayList<>(4);

for (int run = 0; run < runs.size(); run++) {

logbackLogger.info("------------------------>Starting run: "

+ (run + 1));

// logback test

long stTime = System.nanoTime();

int i = 0;

for (i = 1; i <= runs.get(run); i++) {

Thread.sleep(1);

logbackLogger

.info("This is a Logback test log, run: {}, iter: {}",

run, i);

}

logbackRuntimes.add(System.nanoTime() - stTime);

logbackLogger.info("logback run - " + (run + 1) + " " + i);

}

Thread.sleep(5000);

// print results

logbackLogger.info("Run times:");

logbackLogger

.info("Run\tNoOfMessages\tLog4j Time(ms)\tLogback Time(ms)");

for (int run = 0; run < runs.size(); run++) {

logbackLogger.info((run + 1) + "\t" + runs.get(run) + "\t"

+ logbackRuntimes.get(run) / 10e6d);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值