-
-
Notifications
You must be signed in to change notification settings - Fork 111
/
OSLogAppender.kt
49 lines (40 loc) · 1.5 KB
/
OSLogAppender.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package mu
import kotlinx.cinterop.ptr
import platform.darwin.OS_LOG_DEFAULT
import platform.darwin.OS_LOG_TYPE_DEBUG
import platform.darwin.OS_LOG_TYPE_DEFAULT
import platform.darwin.OS_LOG_TYPE_ERROR
import platform.darwin.OS_LOG_TYPE_INFO
import platform.darwin.__dso_handle
import platform.darwin._os_log_internal
import platform.darwin.os_log_t
import platform.darwin.os_log_type_enabled
import platform.darwin.os_log_type_t
import kotlin.native.concurrent.AtomicReference
public open class OSLogAppender: Appender {
override val includePrefix: Boolean = true
protected open fun logger(loggerName: String): os_log_t {
return OS_LOG_DEFAULT
}
private fun log(level: os_log_type_t, loggerName: String, message: String) {
val logger = logger(loggerName)
if (os_log_type_enabled(logger, level)) {
_os_log_internal(__dso_handle.ptr, logger, level, message)
}
}
override fun trace(loggerName: String, message: String) {
log(OS_LOG_TYPE_DEBUG, loggerName, message)
}
override fun debug(loggerName: String, message: String) {
log(OS_LOG_TYPE_DEBUG, loggerName, message)
}
override fun info(loggerName: String, message: String) {
log(OS_LOG_TYPE_INFO, loggerName, message)
}
override fun warn(loggerName: String, message: String) {
log(OS_LOG_TYPE_DEFAULT, loggerName, message)
}
override fun error(loggerName: String, message: String) {
log(OS_LOG_TYPE_ERROR, loggerName, message)
}
}