https://github.com/jdekim43/j-logger
Logger for kotlin
https://github.com/jdekim43/j-logger
kotlin logger logging slf4j
Last synced: 4 months ago
JSON representation
Logger for kotlin
- Host: GitHub
- URL: https://github.com/jdekim43/j-logger
- Owner: jdekim43
- License: apache-2.0
- Created: 2019-11-18T13:20:32.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-12-08T04:34:31.000Z (over 1 year ago)
- Last Synced: 2025-01-06T09:45:13.081Z (5 months ago)
- Topics: kotlin, logger, logging, slf4j
- Language: Kotlin
- Homepage:
- Size: 335 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# j-logger
## Feature
* Support Multiplatform
* Kotlin/JVM
* Java (Beta)
* JS (Alpha)
* Contextual logging
* GlobalLogContext
* ThreadLogContext
* CoroutineLogContext
* Customizable log pipeline : (e.g. filtering, re-format, parallel processing)
* Integration
* Coroutine
* Ktor (Only JVM - Dependent by ktor)
* Koin
* slf4j (Only JVM)
* OkHttp (Only JVM)
* Fuel (Only JVM)
* Configuration option
* Code
* yaml or properties (TO-DO)## Install
### Gradle Project
1. Add dependency
```
build.gradle.kts
implementation("kr.jadekim:j-logger:$jLoggerVersion")
```
## How to use
### Create logger
```
val logger = JLog.get("loggerName")//In JVM
val logger = JLog.get(A::class)
val logger = JLog.get(A::class.java)
```
### Log
```
logger.trace("trace log", meta = mapOf())
logger.debug("debug log", meta = mapOf())
logger.info("info log", meta = mapOf())
logger.warning("warning log", meta = mapOf())
logger.error("error log", meta = mapOf())try {
//occur exception
} catch (e: Exception) {
logger.error("Occur Exception", throwable = e, meta = mapOf())
}
```
### LogContext
LogContext can upsert using plus operation.
```
val logContext = LogContext(mapOf())
val logContext = MutableLogContext(mutableMapOf())GlobalLogContext["globalContext"] = "global context"
ThreadLogContext["threadLocalContext"] = "thread local context"
logger.info("info log") //LogContext = GlobalLogContext + ThreadLogContext
logger.info("info log", context = logContext) //LogContext = GlobalLogContext + ThreadLogContext + logContextwithContext(CoroutineLogContext() + logContext) {
//LogContext = GlobalLogContext + ThreadLogContext + CoroutineLogContext + logContext
logger.sTrace("trace log", meta = mapOf())
logger.sDebug("debug log", meta = mapOf())
logger.sInfo("info log", meta = mapOf())
logger.sWarning("warning log", meta = mapOf())
logger.sError("error log", meta = mapOf())
}
```## Pipeline
### Implement
```
class JLogExamplePipe : JLogPipe {
companion object Key : JLogPipe.Key
override val key = Key
override fun handle(log: Log): Log? {
// if return null, the log will be filtered.
// Log is interface. So, We can return any type that implemented Log interface.
// But must be support return type to pipeline after this.
}
}
```