Skip to content

Instantly share code, notes, and snippets.

@chadselph
Last active May 5, 2025 23:04
Show Gist options
  • Save chadselph/c1d115a4222d890f6bb4e8147281539b to your computer and use it in GitHub Desktop.
Save chadselph/c1d115a4222d890f6bb4e8147281539b to your computer and use it in GitHub Desktop.
reconfigure logback timezone at runtime

You can run this with scala-cli:

$ scala-cli https://gist.github.com/chadselph/c1d115a4222d890f6bb4e8147281539b

... (lots of logback config debug logging) ...


16:02:58.183-0700 INFO  - Before setting timezone

00:02:58.186+0100 INFO  - After setting timezone
<configuration scan="true">
<property name="TIMEZONE" value="UTC" />
<!-- For writing log info to console. -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%n%d{HH:mm:ss.SSSZ} %-5level - %msg%n</pattern>
</encoder>
</appender>
<!-- Set default level of logging. -->
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>
//> using dep ch.qos.logback:logback-classic:1.5.18
//> using resourceDir ./
import org.slf4j.LoggerFactory
import java.util.TimeZone
import ch.qos.logback.classic.LoggerContext
import ch.qos.logback.classic.util.ContextInitializer
@main
def main() =
val logger = LoggerFactory.getLogger("logger")
logger.info("Before setting timezone")
TimeZone.setDefault(TimeZone.getTimeZone("Portugal"))
val context = LoggerFactory.getILoggerFactory().asInstanceOf[LoggerContext]
val ci = new ContextInitializer(context)
context.reset()
ci.autoConfig()
logger.info("After setting timezone")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment