16
16
17
17
package com.facebook.rendercore.debug
18
18
19
+ import com.facebook.rendercore.LogLevel
19
20
import java.util.concurrent.TimeUnit
20
21
import java.util.concurrent.atomic.AtomicBoolean
22
+ import java.util.concurrent.atomic.AtomicReference
21
23
22
24
/* * Base class of all debug events */
23
25
sealed class DebugEvent (
24
26
val type : String ,
25
27
val renderStateId : String ,
26
28
val threadName : String = Thread .currentThread().name,
29
+ val logLevel : LogLevel = LogLevel .DEBUG ,
27
30
private val attributes : Map <String , Any ?> = emptyMap()
28
31
) {
29
32
@@ -85,12 +88,14 @@ class DebugMarkerEvent(
85
88
type : String ,
86
89
renderStateId : String ,
87
90
threadName : String = Thread .currentThread().name,
91
+ logLevel : LogLevel = LogLevel .DEBUG ,
88
92
attributes : Map <String , Any ?> = emptyMap()
89
93
) :
90
94
DebugEvent (
91
95
type = type,
92
96
renderStateId = renderStateId,
93
97
threadName = threadName,
98
+ logLevel = logLevel,
94
99
attributes =
95
100
buildMap {
96
101
put(DebugEventAttribute .timestamp, timestamp)
@@ -104,12 +109,14 @@ class DebugProcessEvent(
104
109
type : String ,
105
110
renderStateId : String ,
106
111
threadName : String = Thread .currentThread().name,
112
+ logLevel : LogLevel = LogLevel .DEBUG ,
107
113
attributes : Map <String , Any ?> = emptyMap()
108
114
) :
109
115
DebugEvent (
110
116
type = type,
111
117
renderStateId = renderStateId,
112
118
threadName = threadName,
119
+ logLevel = logLevel,
113
120
attributes =
114
121
buildMap {
115
122
put(DebugEventAttribute .timestamp, timestamp)
@@ -132,6 +139,15 @@ object DebugEventDispatcher {
132
139
_enabled .set(value)
133
140
}
134
141
142
+ private val minLogLevelRef = AtomicReference (LogLevel .DEBUG )
143
+
144
+ @JvmStatic
145
+ var minLogLevel: LogLevel
146
+ get() = minLogLevelRef.get()
147
+ set(value) {
148
+ minLogLevelRef.set(value)
149
+ }
150
+
135
151
private val _mutableSubscribers : MutableSet <DebugEventSubscriber > = mutableSetOf ()
136
152
137
153
val subscribers: Set <DebugEventSubscriber >
@@ -142,9 +158,10 @@ object DebugEventDispatcher {
142
158
type : String ,
143
159
renderStateId : String ,
144
160
timestamp : Long = System .currentTimeMillis(), // for calender time
161
+ logLevel : LogLevel = LogLevel .DEBUG ,
145
162
attributesFiller : AttributesFiller = AttributesFiller {},
146
163
) {
147
- if (enabled) {
164
+ if (enabled && logLevel >= this .minLogLevel ) {
148
165
val attributes = LinkedHashMap <String , Any ?>()
149
166
attributesFiller.fillAttributes(attributes)
150
167
@@ -154,6 +171,7 @@ object DebugEventDispatcher {
154
171
renderStateId = renderStateId,
155
172
attributes = attributes,
156
173
timestamp = timestamp,
174
+ logLevel = logLevel,
157
175
)
158
176
subscribers.forEach { subscriber ->
159
177
if (subscriber.events.contains(type) || subscriber.events.contains(DebugEvent .All )) {
@@ -177,6 +195,22 @@ object DebugEventDispatcher {
177
195
)
178
196
}
179
197
198
+ @JvmStatic
199
+ inline fun dispatch (
200
+ type : String ,
201
+ renderStateId : String ,
202
+ logLevel : LogLevel = LogLevel .DEBUG ,
203
+ attributesFiller : AttributesFiller = AttributesFiller {},
204
+ ) {
205
+ dispatch(
206
+ type = type,
207
+ renderStateId = renderStateId,
208
+ timestamp = System .currentTimeMillis(), // for calender time
209
+ logLevel = logLevel,
210
+ attributesFiller = attributesFiller,
211
+ )
212
+ }
213
+
180
214
@JvmStatic
181
215
inline fun <T > trace (
182
216
type : String ,
0 commit comments