在 spring boot 中从代码自定义日志文件名
customize log file name from code in springboot
我有一个带有休息端点的简单 springboot 应用程序。我每次调用rest端点,它都会执行一定的activity。现在,所有日志记录信息都进入 wildfly 中的 server.log 文件。我想要一个场景,每次调用我的其余端点时我都可以自定义日志文件的名称。例如
从 A 点到 B 点的所有日志记录信息应转到名为 First.log 的文件,从 B 点到 C 点的所有日志记录信息应转到 Second.log
是否可以通过使用 logback 或 log4j2 实现这样的实现。我可以从代码中自定义日志文件的名称吗?我在其中指定从此时开始的每个日志记录信息都应该转到特定文件。
如果您使用的是 Log4j2,您可以在运行时使用 Configurator#reconfigure
重新配置它。
SpringBoot(cf.Github)使用的标准log4j2.xml
文件使用Java系统属性LOG_FILE
来存储日志文件的位置。因此你只需要:
配置 Spring 启动以记录到文件(参见 documentation)。例如,您可以添加:
logging.file.name = initial.log
你的`application.properties,
每当您想更改日志文件的名称时调用
System.setProperty("LOG_FILE", "first.log");
Configurator.reconfigure();
Log4j2 保证在重新配置期间不会丢失任何消息(旧文件在 新文件创建后 关闭)。
Logback 当然有类似的解决方案,但 Logback 在重新配置期间可能会丢失消息。
我有一个带有休息端点的简单 springboot 应用程序。我每次调用rest端点,它都会执行一定的activity。现在,所有日志记录信息都进入 wildfly 中的 server.log 文件。我想要一个场景,每次调用我的其余端点时我都可以自定义日志文件的名称。例如
从 A 点到 B 点的所有日志记录信息应转到名为 First.log 的文件,从 B 点到 C 点的所有日志记录信息应转到 Second.log
是否可以通过使用 logback 或 log4j2 实现这样的实现。我可以从代码中自定义日志文件的名称吗?我在其中指定从此时开始的每个日志记录信息都应该转到特定文件。
如果您使用的是 Log4j2,您可以在运行时使用 Configurator#reconfigure
重新配置它。
SpringBoot(cf.Github)使用的标准log4j2.xml
文件使用Java系统属性LOG_FILE
来存储日志文件的位置。因此你只需要:
配置 Spring 启动以记录到文件(参见 documentation)。例如,您可以添加:
logging.file.name = initial.log
你的`application.properties,
每当您想更改日志文件的名称时调用
System.setProperty("LOG_FILE", "first.log"); Configurator.reconfigure();
Log4j2 保证在重新配置期间不会丢失任何消息(旧文件在 新文件创建后 关闭)。
Logback 当然有类似的解决方案,但 Logback 在重新配置期间可能会丢失消息。