LiamRyan
LiamRyan

Reputation: 1918

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

I'm wondering if there's a nice clean way to set logging location based on OS just using the application.properties file in Spring Boot?

For instance is it possible to use a regex matcher on ${os.name} or would I just need to go ahead and create a groovy script or something?

My ideal solution is something like

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

Upvotes: 1

Views: 466

Answers (1)

LMC
LMC

Reputation: 12822

You can take advantage of spring profiles and pick configurations according to the -Dspring.profile.active=some_profile system property or SPRING_PROFILES_ACTIVE=some_profile env variable. Yaml file could be

# 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/

App is executed as

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

or also:

SPRING_PROFILES_ACTIVE=nix java <more opts> MyAppMAin

Upvotes: 1

Related Questions