从springboot中的代码自定义日志文件名



我有一个带有rest端点的简单springboot应用程序。每次调用rest端点时,它都会执行一个特定的活动。现在,所有的日志信息都以wildfly的形式保存到server.log文件中。我想有一个场景,我可以自定义日志文件的名称,每次我的休息端点被调用。例如。

从A点到B点的所有日志信息都存放在First.log文件中,从B点到C点的所有日志信息都存放在Second.log文件中

是否可以通过使用logback或log4j2实现。我可以从代码中自定义日志文件的名称吗?在代码中,我指定从此以后的每个日志信息都应该去一个特定的文件。

如果您正在使用Log4j2,您可以在运行时使用Configurator#reconfigure重新配置它。

Spring Boot使用的标准log4j2.xml文件(参见Github)使用Java系统属性LOG_FILE来存储日志文件的位置。因此,您只需要:

  • 配置Spring Boot日志到一个文件(参考文档)。例如,您可以添加:

    logging.file.name = initial.log
    

    到你的' application.properties,

  • 当您想更改日志文件的名称时,调用

    System.setProperty("LOG_FILE", "first.log");
    Configurator.reconfigure();
    

Log4j2保证在重新配置期间不会丢失消息(在创建新文件后关闭旧文件

)。Logback当然也有类似的解决方案,但是Logback在重新配置时可能会丢失消息。

相关内容

  • 没有找到相关文章

最新更新