Java 我可以在运行时使用logback关闭并重新打开日志文件吗?

Java 我可以在运行时使用logback关闭并重新打开日志文件吗?,java,file,slf4j,logback,Java,File,Slf4j,Logback,我是新手。我对它非常着迷,但我不确定它是否适合我的用例 我想有一个记录器,我可以停止和启动。当它停止时,我想从文件系统中删除日志文件。重新启动日志记录时,应重新创建文件 logback能做到这一点吗?当日志记录暂停时,我应该避免在类中调用日志记录程序,还是回写可以处理这个问题 我目前使用的是slf4j.Logger。在中,我看到Appender对象实现了LifeCycle接口,这意味着它们实现了start()、stop()和isStarted() 我以为这意味着可以停止它们,这样我就可以移动文件

我是新手。我对它非常着迷,但我不确定它是否适合我的用例

我想有一个记录器,我可以停止和启动。当它停止时,我想从文件系统中删除日志文件。重新启动日志记录时,应重新创建文件

logback能做到这一点吗?当日志记录暂停时,我应该避免在类中调用日志记录程序,还是回写可以处理这个问题

我目前使用的是slf4j.Logger。在中,我看到Appender对象实现了LifeCycle接口,这意味着它们实现了start()、stop()和isStarted()

我以为这意味着可以停止它们,这样我就可以移动文件了,但后来它发生了:

如果appender无法启动或已停止,则 警告消息将通过logback的内部状态发出 管理系统。经过几次尝试,为了避免洪水 具有相同警告消息副本的内部状态系统, doAppend()方法将停止发出这些警告

这是否意味着我可以停止它,然后删除文件,然后重新启动

我想有一个记录器,我可以停止和启动。当它停止时,我想从文件系统中删除日志文件。重新启动日志记录时,应重新创建文件

我不知道如何通过编程实现这一点,但如果您已将
jmxConfigurator
添加到
logback.xml
config文件中,则可以通过JMX实现这一点

<configuration>
    <jmxConfigurator />
    ...
我要做的是将日志文件重命名为其他名称,然后发出重新加载配置命令。创建新文件后,可以存档或删除重命名的文件

希望这有帮助


如果您拒绝投票,请解释原因:)在Log4j中,您可以使用DOMConfigurator切换配置运行时(您可以使用它停止日志记录或将记录器切换为使用其他目录/文件),以便在Logback中使用类似的类。Logback是Log4j的分支,所以它应该有类似的东西。
ManagementFactory.getPlatformMBeanServer().invoke(new ObjectName(
    "ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator"),
    "reloadDefaultConfiguration", null, null);