콘텐츠로 이동
Bluetape4k 문서1.11

Logger foundation

최신 안정판 Bluetape4k 1.11.0 릴리스 기준

Logger 선언 방식은 호출 위치, 이름 안정성, 테스트에서의 식별 가능성을 결정합니다.

KLogging, KotlinLogging, KLoggerFactory와 SLF4J의 책임 경계

KLogging은 class나 companion object가 상속하고 log property를 공유할 때 적합합니다. log는 Kotlin lazy로 첫 접근에 한 번 생성됩니다.

class InvoiceService {
companion object : KLogging()
fun issue() {
log.info { "Issuing invoice" }
}
}

KotlinLogging은 top-level 코드, 명시적 category, KClass 기반 이름에 적합합니다.

private val auditLog = KotlinLogging.logger("billing.audit")
private val fileLog = KotlinLogging.logger { }
val serviceLog = KotlinLogging.logger(InvoiceService::class)

logger(name)은 blank 이름을 IllegalArgumentException으로 거부합니다. lambda entrypoint와 KLogging은 내부 KLoggerNameResolver가 synthetic/companion 이름을 정규화합니다. 이름이 dashboard와 routing rule의 public key라면 추론 이름보다 명시적 category를 선택합니다.

모듈은 SLF4J Logger를 반환할 뿐 backend를 설치하지 않습니다. 애플리케이션은 Logback 등 provider 하나와 설정을 소유합니다. library가 appender나 root level을 몰래 바꾸면 host application 정책을 침범합니다.

상황선택
class의 모든 instance가 같은 category 사용companion KLogging()
file/top-level functionKotlinLogging.logger {}
안정적인 운영 category 필요logger("stable.name")
type을 명시적으로 반영logger(Type::class)

다음: message 계산 비용과 실패를 Lazy messages에서 다룹니다.