mirror of
https://github.com/oxen-io/session-android.git
synced 2025-01-13 09:53:39 +00:00
11a2ed0743
Exception logging tends to be race-y, so now we block and wait for all logs to be written before continuing with the crash.
148 lines
3.5 KiB
Java
148 lines
3.5 KiB
Java
package org.thoughtcrime.securesms.logging;
|
|
|
|
import android.support.annotation.MainThread;
|
|
|
|
public class Log {
|
|
|
|
private static Logger[] loggers;
|
|
|
|
@MainThread
|
|
public static void initialize(Logger... loggers) {
|
|
Log.loggers = loggers;
|
|
}
|
|
|
|
public static void v(String tag, String message) {
|
|
v(tag, message, null);
|
|
}
|
|
|
|
public static void d(String tag, String message) {
|
|
d(tag, message, null);
|
|
}
|
|
|
|
public static void i(String tag, String message) {
|
|
i(tag, message, null);
|
|
}
|
|
|
|
public static void w(String tag, String message) {
|
|
w(tag, message, null);
|
|
}
|
|
|
|
public static void e(String tag, String message) {
|
|
e(tag, message, null);
|
|
}
|
|
|
|
public static void wtf(String tag, String message) {
|
|
wtf(tag, message, null);
|
|
}
|
|
|
|
public static void v(String tag, Throwable t) {
|
|
v(tag, null, t);
|
|
}
|
|
|
|
public static void d(String tag, Throwable t) {
|
|
d(tag, null, t);
|
|
}
|
|
|
|
public static void i(String tag, Throwable t) {
|
|
i(tag, null, t);
|
|
}
|
|
|
|
public static void w(String tag, Throwable t) {
|
|
w(tag, null, t);
|
|
}
|
|
|
|
public static void e(String tag, Throwable t) {
|
|
e(tag, null, t);
|
|
}
|
|
|
|
public static void wtf(String tag, Throwable t) {
|
|
wtf(tag, null, t);
|
|
}
|
|
|
|
public static void v(String tag, String message, Throwable t) {
|
|
if (loggers != null) {
|
|
for (Logger logger : loggers) {
|
|
logger.v(tag, message, t);
|
|
}
|
|
} else {
|
|
android.util.Log.v(tag, message, t);
|
|
}
|
|
}
|
|
|
|
public static void d(String tag, String message, Throwable t) {
|
|
if (loggers != null) {
|
|
for (Logger logger : loggers) {
|
|
logger.d(tag, message, t);
|
|
}
|
|
} else {
|
|
android.util.Log.d(tag, message, t);
|
|
}
|
|
}
|
|
|
|
public static void i(String tag, String message, Throwable t) {
|
|
if (loggers != null) {
|
|
for (Logger logger : loggers) {
|
|
logger.i(tag, message, t);
|
|
}
|
|
} else {
|
|
android.util.Log.i(tag, message, t);
|
|
}
|
|
}
|
|
|
|
public static void w(String tag, String message, Throwable t) {
|
|
if (loggers != null) {
|
|
for (Logger logger : loggers) {
|
|
logger.w(tag, message, t);
|
|
}
|
|
} else {
|
|
android.util.Log.w(tag, message, t);
|
|
}
|
|
}
|
|
|
|
public static void e(String tag, String message, Throwable t) {
|
|
if (loggers != null) {
|
|
for (Logger logger : loggers) {
|
|
logger.e(tag, message, t);
|
|
}
|
|
} else {
|
|
android.util.Log.e(tag, message, t);
|
|
}
|
|
}
|
|
|
|
public static void wtf(String tag, String message, Throwable t) {
|
|
if (loggers != null) {
|
|
for (Logger logger : loggers) {
|
|
logger.wtf(tag, message, t);
|
|
}
|
|
} else {
|
|
android.util.Log.wtf(tag, message, t);
|
|
}
|
|
}
|
|
|
|
public static String tag(Class<?> clazz) {
|
|
String simpleName = clazz.getSimpleName();
|
|
if (simpleName.length() > 23) {
|
|
return simpleName.substring(0, 23);
|
|
}
|
|
return simpleName;
|
|
}
|
|
|
|
public static void blockUntilAllWritesFinished() {
|
|
if (loggers != null) {
|
|
for (Logger logger : loggers) {
|
|
logger.blockUntilAllWritesFinished();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static abstract class Logger {
|
|
public abstract void v(String tag, String message, Throwable t);
|
|
public abstract void d(String tag, String message, Throwable t);
|
|
public abstract void i(String tag, String message, Throwable t);
|
|
public abstract void w(String tag, String message, Throwable t);
|
|
public abstract void e(String tag, String message, Throwable t);
|
|
public abstract void wtf(String tag, String message, Throwable t);
|
|
public abstract void blockUntilAllWritesFinished();
|
|
}
|
|
}
|