A Kotlin-y approach may use a DSL rather than a builder. For example, a LoggingScope passed as a lambda receiver could result in an API that could look something like:
logger.atError {
// `this` here is an instance of `LoggingScope`
// everything optional except log
throwable = ...
marker = ...
location = ...
log = ...
}
The standard builder API could also be supported as an alternative for users who prefer it.
The Kotlin API does not have an equivalent to the https://logging.apache.org/log4j/2.x/manual/logbuilder.html.
A Kotlin-y approach may use a DSL rather than a builder. For example, a
LoggingScope
passed as a lambda receiver could result in an API that could look something like:The standard builder API could also be supported as an alternative for users who prefer it.
See also relevant background discussion about designing a fluent logging API from https://github.com/google/flogger and https://google.github.io/flogger/benefits.