Coverage Summary for Class: LogxFileLineBuilder (kr.open.library.simple_ui.core.logcat.internal.formatter)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| LogxFileLineBuilder |
100%
(1/1)
|
100%
(4/4)
|
|
100%
(12/12)
|
100%
(59/59)
|
package kr.open.library.simple_ui.core.logcat.internal.formatter
import kr.open.library.simple_ui.core.logcat.config.LogType
import kr.open.library.simple_ui.core.logcat.internal.common.LogxTimeUtils
/**
* 파일 로그 라인 포맷을 생성하는 빌더입니다.
*
* Builds formatted lines for file logging.
* <br><br>
* 파일 기록용 라인 포맷을 생성합니다.
*/
internal class LogxFileLineBuilder {
/**
* 일반 로그 라인을 생성합니다.
*
* Builds file log lines for a given payload list.
* <br><br>
* 일반 로그 payload 목록을 파일 라인으로 변환합니다.
*
* @param type 로그 타입.
* @param prefix 프레임/태그 등의 접두 정보.
* @param payloadLines 출력할 본문 라인 목록.
*/
fun buildLines(type: LogType, prefix: String, payloadLines: List<String>): List<String> {
val timestamp = LogxTimeUtils.nowTimestamp()
return payloadLines.map { payload ->
buildLine(timestamp, type, prefix, payload)
}
}
/**
* JSON 로그 라인을 생성합니다.
*
* Builds file log lines for formatted JSON output.
* <br><br>
* JSON 포맷 출력에 맞춰 파일 라인 목록을 생성합니다.
*
* @param prefix 프레임/태그 등의 접두 정보.
* @param formattedJson JSON 출력 구성 요소.
*/
fun buildJsonLines(prefix: String, formattedJson: FormattedJson): List<String> {
val timestamp = LogxTimeUtils.nowTimestamp()
val firstLine = buildLine(timestamp, LogType.JSON, prefix, formattedJson.header)
return buildList {
add(firstLine)
addAll(formattedJson.bodyLines)
add(formattedJson.endLine)
}
}
/**
* 단일 파일 로그 라인을 조합합니다.
*
* Builds a single formatted file log line.
* <br><br>
* 단일 로그 라인을 조합합니다.
*
* @param timestamp 로그 시각 문자열.
* @param type 로그 타입.
* @param prefix 프레임/태그 등의 접두 정보.
* @param payload 출력 payload.
*/
private fun buildLine(timestamp: String, type: LogType, prefix: String, payload: String): String =
"$timestamp [${type.outputChar}] $prefix : $payload"
}