https://github.com/harryjhin/slf4j-api-extensions
slf4j-api-extensions is a GitHub project that provides additional utilities and enhancements for the SLF4J logging framework to improve its functionality and ease of use.
https://github.com/harryjhin/slf4j-api-extensions
dokka kotlin library slf4j slf4j-api
Last synced: 6 months ago
JSON representation
slf4j-api-extensions is a GitHub project that provides additional utilities and enhancements for the SLF4J logging framework to improve its functionality and ease of use.
- Host: GitHub
- URL: https://github.com/harryjhin/slf4j-api-extensions
- Owner: HarryJhin
- License: mit
- Created: 2024-09-03T08:23:50.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2024-11-17T15:57:10.000Z (6 months ago)
- Last Synced: 2024-11-17T16:38:50.045Z (6 months ago)
- Topics: dokka, kotlin, library, slf4j, slf4j-api
- Language: Kotlin
- Homepage: https://harryjhin.github.io/slf4j-api-extensions/
- Size: 81.1 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/HarryJhin/slf4j-api-extensions/actions/workflows/build.yml)
[](https://github.com/HarryJhin/slf4j-api-extensions/actions/workflows/static.yml)
[](https://github.com/HarryJhin/slf4j-api-extensions/actions/workflows/publish.yml)
[](https://central.sonatype.com/artifact/io.github.harryjhin/slf4j-api-extensions)
[](http://kotlinlang.org)
[](https://harryjhin.github.io/slf4j-api-extensions/)
[](https://opensource.org/licenses/MIT)# Kotlin 사용자를 위한 SLF4J 확장 라이브러리
`slf4j-api-extensions`는 Kotlin 사용자들에게 SLF4J(Simple Logging Facade for Java)를 더욱 편리하게 사용할 수 있도록 돕는 라이브러리입니다.
## 주요 특징
1. `slf4j-api` 확장: 구현체를 직접 사용하는 대신 `slf4j-api`를 확장하여 사용할 수 있는 기능을 제공합니다.
즉, `slf4j-simple`, `log4j2`, `logback` 등의 구현체를 사용하는 경우에 모두 동일한 API를 사용할 수 있습니다.
2. 캐싱: `Logger` 인스턴스를 캐싱하여 불필요한 인스턴스 생성을 줄여줍니다.
3. 함수형 패러다임: 함수형 프로그래밍 스타일로 로깅을 할 수 있도록 지원합니다.## dependency
```kotlin
dependencies {
implementation("io.github.debop:slf4j-api-extensions:$version")
}
```## 구성
### Logger Cache
`Logger` 인스턴스 생성은 비용이 비싸기 때문에, `Logger` 인스턴스를 캐싱하여 불필요한 인스턴스 생성을 줄여줍니다.
단, 최대 1,000개의 `Logger` 인스턴스만 캐싱합니다.
만약 캐싱된 `Logger` 인스턴스가 1,000개를 넘어가면, 가장 오래된 `Logger` 인스턴스를 제거합니다(FIFO).
최대 캐싱 개수를 변경하려면 `slf4j-api-extensions.properties` 파일을 생성하고 `max-cache-size` 값을 변경하면 됩니다.`src/main/resources/slf4j-api-extensions.properties`:
```properties
max-cache-size=100
```## 사용법
`slf4j-api-extensions`는 내부에서 활성화된 로그 레벨을 확인하고, 활성화되었을 때만 `message`를 생성합니다.
여기서 `message`는 `() -> String` 형태의 람다 함수입니다.
이렇게 함으로써, 로그 레벨이 활성화되지 않은 경우에는 `message`를 생성하지 않음으로써 성능을 향상시킬 수 있습니다.### trace
```kotlin
class MyClass {fun myFunc() {
trace { "trace message" }
}fun throwableFunc() {
val throwable = Throwable("throwable message")
trace(throwable) { "trace message" }
}
}
```### debug
```kotlin
class MyClass {fun myFunc() {
debug { "debug message" }
}fun throwableFunc() {
val throwable = Throwable("throwable message")
debug(throwable) { "debug message" }
}
}
```### info
```kotlin
class MyClass {fun myFunc() {
info { "info message" }
}fun throwableFunc() {
val throwable = Throwable("throwable message")
info(throwable) { "info message" }
}
}
```### warn
```kotlin
class MyClass {fun myFunc() {
warn { "warn message" }
}fun throwableFunc() {
val throwable = Throwable("throwable message")
warn(throwable) { "warn message" }
}
}
```### error
```kotlin
class MyClass {fun myFunc() {
error { "error message" }
}fun throwableFunc() {
val throwable = Throwable("throwable message")
error(throwable) { "error message" }
}
}
```