From 28d4ba71b505f4922ddd9dcf1230ddf99f3ba11c Mon Sep 17 00:00:00 2001 From: Jung Haesung <48352078+cometj03@users.noreply.github.com> Date: Mon, 26 Feb 2024 16:44:26 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EB=B2=A4=ED=8A=B8=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20=EC=B6=94=EA=B0=80=20(#24)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs site 경로 일일이 설정하도록 변경 * refactor: Log 버전 설정 방식 수정 * feat: develop에 push 되었을 때도 문서 사이트 빌드 --- .github/workflows/deployDocsSite.yml | 11 +---- .../kotlin/com/yourssu/logging/system/Util.kt | 33 +++++-------- .../kotlin/com/yourssu/logging/system/YLS.kt | 49 +++++++++++++++---- .../com/yourssu/logging/system/LoggingTest.kt | 3 +- 4 files changed, 55 insertions(+), 41 deletions(-) diff --git a/.github/workflows/deployDocsSite.yml b/.github/workflows/deployDocsSite.yml index 7916c2d..6600691 100644 --- a/.github/workflows/deployDocsSite.yml +++ b/.github/workflows/deployDocsSite.yml @@ -3,7 +3,7 @@ name: Deploy docs on: push: - branches: [ master ] + branches: [ master, develop ] jobs: release: @@ -12,13 +12,6 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Read versionName property - id: logger_version - uses: christian-draeger/read-properties@1.1.1 - with: - path: './version.properties' - properties: 'versionName' - - name: set up JDK 17 uses: actions/setup-java@v4 with: @@ -38,4 +31,4 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BRANCH: gh-page FOLDER: yls/build/dokka/html/ - TARGET_FOLDER: 'docs/%{{ steps.logger_version.outputs.versionName }}/' # ex: docx/0.1/ + TARGET_FOLDER: 'docs/0.x/' diff --git a/yls/src/main/kotlin/com/yourssu/logging/system/Util.kt b/yls/src/main/kotlin/com/yourssu/logging/system/Util.kt index 470eb0f..3df4057 100644 --- a/yls/src/main/kotlin/com/yourssu/logging/system/Util.kt +++ b/yls/src/main/kotlin/com/yourssu/logging/system/Util.kt @@ -1,53 +1,46 @@ package com.yourssu.logging.system -fun logEvent( +fun YLS.Facade.logEvent( eventName: String, - version: Int = YLS.VERSION, vararg extra: Pair, ) { - YLS.log(version, "event" to eventName, *extra) + YLS.log("event" to eventName, *extra) } -fun logAppInitEvent( - version: Int = YLS.VERSION, - vararg extra: Pair, -) { - logEvent("AppInitialEntry", version, *extra) +fun YLS.Facade.logAppInit(vararg extra: Pair) { + logEvent("AppInitialEntry", *extra) } -fun logDeepLinkEntry( +fun YLS.Facade.logDeepLinkEntry( screenName: String, - version: Int = YLS.VERSION, vararg extra: Pair, ) { - logEvent("DeepLinkEntry", version, "screen" to screenName, *extra) + logEvent("DeepLinkEntry", "screen" to screenName, *extra) } -fun logScreenEntry( +fun YLS.Facade.logScreenEntry( screenName: String, - version: Int = YLS.VERSION, vararg extra: Pair, ) { - logEvent("ScreenEntry", version, "screen" to screenName, *extra) + logEvent("ScreenEntry", "screen" to screenName, *extra) } -fun logScreenExit( +fun YLS.Facade.logScreenExit( screenName: String, - version: Int = YLS.VERSION, vararg extra: Pair, ) { - logEvent("ScreenExit", version, "screen" to screenName, *extra) + logEvent("ScreenExit", "screen" to screenName, *extra) + flush() } /** * @param componentName 클릭한 요소의 이름 * @param screenName 클릭한 시점의 화면의 이름 */ -fun logClick( +fun YLS.Facade.logClick( componentName: String, screenName: String, - version: Int = YLS.VERSION, vararg extra: Pair, ) { - logEvent("${componentName}Clicked", version, "screen" to screenName, *extra) + logEvent("${componentName}Clicked", "screen" to screenName, *extra) } diff --git a/yls/src/main/kotlin/com/yourssu/logging/system/YLS.kt b/yls/src/main/kotlin/com/yourssu/logging/system/YLS.kt index 07b895b..6c31136 100644 --- a/yls/src/main/kotlin/com/yourssu/logging/system/YLS.kt +++ b/yls/src/main/kotlin/com/yourssu/logging/system/YLS.kt @@ -94,8 +94,12 @@ class YLS private constructor() { } } - companion object { - internal val VERSION = 1 + companion object Facade : Logger() { + private const val DEFAULT_VERSION = 1 + private var version: Int = DEFAULT_VERSION + get() { + return field.also { field = DEFAULT_VERSION } + } private lateinit var logger: Logger private lateinit var defaultEvent: Map @@ -130,6 +134,28 @@ class YLS private constructor() { this.logger = logger } + /** + * 로깅 될 로그 데이터의 버전을 설정합니다. + * 한 번 [createLog] 메서드가 호출되면 [DEFAULT_VERSION]으로 초기화 됩니다. + * + * ```kotlin + * YLS.version(2).log(...) + * ``` + */ + fun version(version: Int): YLS.Facade { + this.version = version + return this + } + + fun createLog(eventMap: Map): YLSEventData { + return YLSEventData( + hashedId = hashedUserId, + timestamp = getTimestamp(), + version = this.version, + event = defaultEvent + eventMap, + ) + } + /** * 기본적인 로그 메서드입니다. * @@ -138,28 +164,31 @@ class YLS private constructor() { * ``` * @param events 이벤트 key-value 쌍 */ - fun log(version: Int = VERSION, vararg events: Pair) { + fun log(vararg events: Pair) { if (!::logger.isInitialized) { throw AssertionError("Not initialized! : YLS.init()을 먼저 호출해 주세요.") } - val eventData = YLSEventData( - hashedId = hashedUserId, - timestamp = getTimestamp(), - version = version, - event = defaultEvent + events.toMap(), - ) + val eventData = createLog(events.toMap()) + log(eventData) + } + + fun log(eventData: YLSEventData) { logger.enqueue(eventData) } /** Logger에 남아있는 로그 데이터를 모두 내보낸 후 큐를 비웁니다. */ - fun flush() { + override fun flush() { if (!::logger.isInitialized) { throw AssertionError("Not initialized! : YLS.init()을 먼저 호출해 주세요.") } logger.flush() } + override fun log(eventData: List) { + throw AssertionError("This method is not available!") + } + /** * ASCII 33 ~ 126 사이의 문자로 `length`만큼의 길이의 랜덤 문자열을 반환합니다. * diff --git a/yls/src/test/kotlin/com/yourssu/logging/system/LoggingTest.kt b/yls/src/test/kotlin/com/yourssu/logging/system/LoggingTest.kt index 7f16f69..e5e2e6b 100644 --- a/yls/src/test/kotlin/com/yourssu/logging/system/LoggingTest.kt +++ b/yls/src/test/kotlin/com/yourssu/logging/system/LoggingTest.kt @@ -37,7 +37,6 @@ class LoggingTest { fun ylsDebugClickLogging() { // 버튼 클릭 이벤트 YLS.log( - version = 1, "event" to "ButtonClicked", "screen" to "LoginScreen", ) @@ -72,7 +71,7 @@ class LoggingTest { * queue size : 2 */ repeat(12) { -// YLS.log("event" to "$it") + YLS.log("event" to "$it") } // 함수 테스트