{"id":19335124,"url":"https://github.com/jdekim43/j-logger","last_synced_at":"2025-02-24T07:42:28.439Z","repository":{"id":65509327,"uuid":"222454147","full_name":"jdekim43/j-logger","owner":"jdekim43","description":"Logger for kotlin","archived":false,"fork":false,"pushed_at":"2023-12-08T04:34:31.000Z","size":343,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-06T09:45:13.081Z","etag":null,"topics":["kotlin","logger","logging","slf4j"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jdekim43.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-18T13:20:32.000Z","updated_at":"2021-12-03T06:02:28.000Z","dependencies_parsed_at":"2025-01-06T09:41:24.128Z","dependency_job_id":"88be6b14-cd3d-4d45-bcd9-4d8949bfb9d1","html_url":"https://github.com/jdekim43/j-logger","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdekim43%2Fj-logger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdekim43%2Fj-logger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdekim43%2Fj-logger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdekim43%2Fj-logger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdekim43","download_url":"https://codeload.github.com/jdekim43/j-logger/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240441862,"owners_count":19801791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kotlin","logger","logging","slf4j"],"created_at":"2024-11-10T03:05:28.869Z","updated_at":"2025-02-24T07:42:28.393Z","avatar_url":"https://github.com/jdekim43.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# j-logger\n\n## Feature\n* Support Multiplatform\n  * Kotlin/JVM\n  * Java (Beta)\n  * JS (Alpha)\n* Contextual logging\n  * GlobalLogContext\n  * ThreadLogContext\n  * CoroutineLogContext\n* Customizable log pipeline : (e.g. filtering, re-format, parallel processing)\n* Integration\n  * Coroutine\n  * Ktor (Only JVM - Dependent by ktor)\n  * Koin\n  * slf4j (Only JVM)\n  * OkHttp (Only JVM)\n  * Fuel (Only JVM)\n* Configuration option\n  * Code\n  * yaml or properties (TO-DO)\n\n## Install\n### Gradle Project\n1. Add dependency\n    ```\n    build.gradle.kts\n   \n    implementation(\"kr.jadekim:j-logger:$jLoggerVersion\")\n    ```\n## How to use\n### Create logger\n```\nval logger = JLog.get(\"loggerName\")\n\n//In JVM\nval logger = JLog.get(A::class)\nval logger = JLog.get(A::class.java)\n```\n### Log\n```\nlogger.trace(\"trace log\", meta = mapOf())\nlogger.debug(\"debug log\", meta = mapOf())\nlogger.info(\"info log\", meta = mapOf())\nlogger.warning(\"warning log\", meta = mapOf())\nlogger.error(\"error log\", meta = mapOf())\n\ntry {\n    //occur exception\n} catch (e: Exception) {\n    logger.error(\"Occur Exception\", throwable = e, meta = mapOf())\n}\n```\n### LogContext\nLogContext can upsert using plus operation.\n```\nval logContext = LogContext(mapOf())\nval logContext = MutableLogContext(mutableMapOf())\n\nGlobalLogContext[\"globalContext\"] = \"global context\"\n\nThreadLogContext[\"threadLocalContext\"] = \"thread local context\"\n\nlogger.info(\"info log\") //LogContext = GlobalLogContext + ThreadLogContext\nlogger.info(\"info log\", context = logContext) //LogContext = GlobalLogContext + ThreadLogContext + logContext\n\nwithContext(CoroutineLogContext() + logContext) {\n    //LogContext = GlobalLogContext + ThreadLogContext + CoroutineLogContext + logContext\n    logger.sTrace(\"trace log\", meta = mapOf())\n    logger.sDebug(\"debug log\", meta = mapOf())\n    logger.sInfo(\"info log\", meta = mapOf())\n    logger.sWarning(\"warning log\", meta = mapOf())\n    logger.sError(\"error log\", meta = mapOf())\n}\n```\n\n## Pipeline\n### Implement\n```\nclass JLogExamplePipe : JLogPipe {\n    companion object Key : JLogPipe.Key\u003cJLogExamplePipe\u003e\n    \n    override val key = Key\n    \n    override fun handle(log: Log): Log? {\n        // if return null, the log will be filtered.\n        // Log is interface. So, We can return any type that implemented Log interface.\n        // But must be support return type to pipeline after this.\n    }\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdekim43%2Fj-logger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdekim43%2Fj-logger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdekim43%2Fj-logger/lists"}