Java的流读一行丢一行_java – 在少数特定情况下记录丢失的消息

我正在使用

java.util.logging来完成我的应用程序的所有日志记录.

直到最近,我在没有任何特定配置的情况下使用日志工具.一切都按预期工作,所有日志都在控制台中可见(stderr)

现在,我想自定义日志的配置.我希望日志显示在控制台上,但我希望它们也可以写在文件中.我提出了以下解决方案:

public static void main(String[] args) {

System.setProperty("java.util.logging.config.file","log.config");

Logger defLogger = Logger.getLogger("fr.def"); // all loggers I use begin by "fr.def"

defLogger.setLevel(Level.ALL);

defLogger.addHandler(new ConsoleHandler());

defLogger.addHandler(new FileHandler());

// real code here ...

以下是log.config文件的内容:

java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

java.util.logging.FileHandler.count=10

java.util.logging.FileHandler.pattern=logs/visiodef2.%g.log

这个解决方案大部分都有效:我可以在控制台和文件中看到日志.除此之外,在某些情况下,一些日志消息只是丢失(对于控制台和文件).日志丢失的情况示例:

>在JVM的关闭挂钩上

>在默认的未捕获异常处理程序上

>在EDT的异常处理程序上

>在主JFrame的windowClosing事件上(使用默认关闭操作EXIT_ON_CLOSE配置)

除了上面描述的之外,没有其他配置.不涉及日志级别:我可以看到一些INFO日志,但有些丢失的日志是严重的.

我还尝试添加一个关闭钩子来刷新所有处理程序,但没有成功.

所以,问题是:按照我的方式配置日志记录是否安全?你能看出为什么有些日志会丢失的原因吗?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值