@@ -32,6 +32,11 @@ public final class Logger {
32
32
*/
33
33
private static final int MAX_METHOD_COUNT = 5 ;
34
34
35
+ /**
36
+ * The minimum stack trace index, starts at this class after two native calls.
37
+ */
38
+ private static final int MIN_STACK_OFFSET = 3 ;
39
+
35
40
/**
36
41
* It is used to determine log settings such as method count, thread info visibility
37
42
*/
@@ -120,7 +125,7 @@ public static void e(String tag, Exception e) {
120
125
121
126
public static void e (String message , int methodCount ) {
122
127
validateMethodCount (methodCount );
123
- e (message , null , methodCount );
128
+ e (TAG , message , methodCount );
124
129
}
125
130
126
131
public static void e (String tag , String message , int methodCount ) {
@@ -303,8 +308,11 @@ private static void logHeaderContent(int logType, String tag, int methodCount) {
303
308
logDivider (logType , tag );
304
309
}
305
310
String level = "" ;
311
+
312
+ int stackOffset = getStackOffset (trace );
313
+
306
314
for (int i = methodCount ; i > 0 ; i --) {
307
- int stackIndex = i + 5 ;
315
+ int stackIndex = i + stackOffset ;
308
316
StringBuilder builder = new StringBuilder ();
309
317
builder .append ("║ " )
310
318
.append (level )
@@ -407,5 +415,20 @@ public Settings setLogLevel(LogLevel logLevel) {
407
415
}
408
416
}
409
417
418
+ /**
419
+ * Determines the starting index of the stack trace, after method calls made by this class.
420
+ *
421
+ * @param trace the stack trace
422
+ * @return the stack offset
423
+ */
424
+ private static int getStackOffset (StackTraceElement [] trace ) {
425
+ for (int i = MIN_STACK_OFFSET ; i < trace .length ; i ++) {
426
+ StackTraceElement e = trace [i ];
427
+ if (!e .getClassName ().equals (Logger .class .getName ())) {
428
+ return --i ;
429
+ }
430
+ }
431
+ return -1 ;
432
+ }
410
433
411
434
}
0 commit comments