繁体   English   中英

动态创建和销毁日志记录追加程序

[英]dynamically creating & destroying logging appenders

我有一个传统的PSVM应用程序,我想将其日志记录输出重定向到每次执行的唯一文件。 所以,如果我在10:00调用它,那么让它将它的输出重定向到{thread-id} -10:00.log; 另一个执行线程可以在10:01开始执行,其输出将转到{thread-id} -10:01.log。 我明白这不优雅。

我的问题是:

  • 这可能吗?
  • 有人知道如何接近吗?
  • 是否有可能在不再需要时释放/销毁一个appender?

谢谢!

我将从FileAppender开始,并从中派生出来创建自己的。 只需修改您的版本以获取当前线程ID,并在创建之前将合适的线程ID /时间戳附加到该文件。 你会维护(比方说)一个(缓冲的) FileWriters的地图,该地图以线程ID为关键字

编写appender非常简单 - 这是一个关于如何做到的Javaworld指南

在上面,您的程序是否可能在一分钟内启动两次? 您是否要附加进程ID或类似内容以保持唯一性?

这是不可能的,至少在log4j中不容易做到。 但是,如果你看一下带有logback(log4j的后继者)的SiftingAppender发货,它的目的是处理在运行时标准上创建appender以及在不再需要时删除它们。

如果应用程序需要在每次应用程序启动时只创建一个日志文件,则只需根据时间戳命名日志文件即可。 如果您需要进一步的帮助,请在logback用户邮件列表上大喊大叫。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM