根据 OS 在 spring boot application.properties/.yml 中设置日志文件位置

Set logfile location based on OS in spring boot application.properties/.yml

我想知道是否有一种简洁的方法可以根据 OS 仅使用 Spring 引导中的 application.properties 文件来设置日志记录位置?

例如,是否可以在 ${os.name} 上使用正则表达式匹配器,或者我是否只需要继续创建一个 groovy 脚本或其他东西?

我理想的解决方案是

logging:
  file:  ${os.name}.test(/*window*/gi) ? C:/ProgramData/Logs/ : /var/log/

您可以利用 spring profiles 并根据 -Dspring.profile.active=some_profile 系统 属性 或 SPRING_PROFILES_ACTIVE=some_profile 环境变量选择配置。 Yaml 文件可以是

# a safe default relative to app root
logging:
     file: logs 

----

spring:
    profiles: nix
logging:
     file: /var/log/myapp

----


spring:
    profiles: win
logging:
     file: C:/ProgramData/Logs/

应用执行为

java -Dspring.profile.active=nix <more opts> MyAppMain

或者还有:

SPRING_PROFILES_ACTIVE=nix java <more opts> MyAppMAin