如何在java中创建或配置Filehandler,以便在不同的执行中逻辑化我的日志?

如何在java中创建或配置Filehandler,以便在不同的执行中逻辑化我的日志?,java,logging,filehandler,Java,Logging,Filehandler,你可能认为这是一个愚蠢的问题,但我肯定没有找到它的规格 我有一个小程序,需要在执行时记录成功和失败,我需要将日志与默认日志分开,以便每次都能轻松阅读。我原来说: Logger.getLogger("Success").addHandler(new FileHandler("var/success.log", true)); 我的意图是拥有一个不断增长的日志,每次我执行程序时,日志都会不断增长。当我查看日志时,它实际上只有很多头,每次执行该行时都有一次,即使没有保存任何日志。我非常确定这不是它应

你可能认为这是一个愚蠢的问题,但我肯定没有找到它的规格

我有一个小程序,需要在执行时记录成功和失败,我需要将日志与默认日志分开,以便每次都能轻松阅读。我原来说:

Logger.getLogger("Success").addHandler(new FileHandler("var/success.log", true));
我的意图是拥有一个不断增长的日志,每次我执行程序时,日志都会不断增长。当我查看日志时,它实际上只有很多头,每次执行该行时都有一次,即使没有保存任何日志。我非常确定这不是它应该如何工作的,我不再有一个唯一的大日志,但在一个文件中有很多日志,切换到另一个格式化程序感觉根本不是一个解决方案(我仍然需要XML)

我目前正在搜索的一个解决方案是在每次执行时打开一个新文件。 构造函数中的模式似乎对此没有帮助。%u仅测试已打开或无法写入的文件,但无论是否启用附加,现有文件都不会停止此处理程序。对于%g,一个旋转,它只是根据大小旋转,但我不确定之前的日志问题仍然存在

有没有办法通过修改
记录器
日志管理器
、构造函数或
文件处理程序
?在打开记录器之前,使用文件(或路径、文件或任何东西)检查每个组合的我自己的特定解决方案似乎效率不高,我真的不想担心这一点

另外,有没有办法让FileHander实际读取文件输入,并在日志保留的位置继续日志,而不是创建一个带有新标题的新日志

这第二个问题,虽然更适合我的需要,但似乎更难得到(但我知道什么?),所以我可以用第一个

谢谢

我原来说:

Logger.getLogger("Success").addHandler(new FileHandler("var/success.log", true));
Logger.getLogger(“Success”).addHandler(新文件处理程序(“var/Success.log”,true))

在七月编码中,您需要改进的地方有:

  • 以一种安全的方式握住记录器
  • 使用filehandler的绝对路径或标记
  • 使用静态块,这样就不会创建多个文件处理程序并将其添加到记录器中
  • 我的意图是拥有一个不断增长的日志,每次我执行程序时,日志都会不断增长。当我查看日志时,它实际上只有很多头,每次执行该行时都有一次,即使没有保存任何日志。我非常确定这不是它应该如何工作的,我不再有一个唯一的大日志,但在一个文件中有很多日志,切换到另一个格式化程序感觉根本不是一个解决方案(我仍然需要XML)

    [剪报]

    还有,有没有办法让FileHander实际读取文件输入并继续保留日志,而不是创建带有新标题的新日志

    这就是它的工作原理。这里有一个用于CSV的示例,但对于XML也同样适用。扩展XMLFormatter并覆盖getHead和getTail

    我目前正在搜索的一个解决方案是在每次执行时打开一个新文件。构造函数中的模式似乎对此没有帮助。%u仅测试已打开或无法写入的文件,但无论是否启用附加,现有文件都不会停止此处理程序。对于%g,一个旋转,它只是根据大小旋转,但我不确定之前的日志问题仍然存在

    您正在从代码创建FileHandler,因此您可以简单地编写逻辑代码,自己创建一个唯一的文件名

    new FileHandler("var/success" + System.nanoTime() + ".log", true);