代码之家  ›  专栏  ›  技术社区  ›  Edward Q. Bridges

动态创建和销毁日志附加器

  •  5
  • Edward Q. Bridges  · 技术社区  · 17 年前

    我有一个遗留的PSVM应用程序,我希望每次执行时将其日志输出重定向到唯一的文件。因此,如果我在10:00调用它,那么让它将其输出重定向到{thread id}-10:00.log;另一个执行线程可能在10:01开始执行,其输出将转到{thread id}-10:01.log。我知道这并不优雅。

    我的问题是:

    • 有人知道如何接近吗?

    谢谢

    2 回复  |  直到 17 年前
        1
  •  4
  •   Brian Agnew    17 年前

    我会从 FileAppender 从中衍生出你自己的。只需修改您的版本即可获得当前线程id,并在创建之前将适当的线程id/时间戳附加到文件中。您将维护(比如)一个(缓冲的)映射 FileWriters 键入线程id。

    编写appender是非常琐碎的- here's a Javaworld guide 关于如何做到这一点。

        2
  •  1
  •   Ceki    17 年前

    这是不可能的,至少在log4j中不容易做到。然而,如果你看 SiftingAppender 随logback(log4j的后继者)一起提供,它设计用于根据运行时标准创建附加程序,以及在不再需要时删除附加程序。