package cn.mutils.core.log;
import cn.mutils.app.AppBuildConfig;
import cn.mutils.app.AppLogs;
import cn.mutils.core.runtime.AppRuntime;
import cn.mutils.core.runtime.StackTraceUtil;
import cn.mutils.core.text.StringUtil;
/**
* Logs of framework<br>
* This logs instance is used for Java runtime logs<br>
* You should use this class with static calls as:<br>
* Logs.v("Hello world!");<br>
* Logs.i("Hello world!");<br>
* Logs.d("Hello world!");<br>
* Logs.w("Hello world!");<br>
* Logs.e("Hello world!");<br>
*
* @see AppLogs
*/
public class Logs implements ILogs {
protected static ILogs sLogs = null;
protected static ILogs getLogs() {
if (sLogs == null) {
AppRuntime rt = AppRuntime.detect();
if (rt == AppRuntime.ANDROID) {
sLogs = new AppLogs();
} else {
sLogs = new Logs();
}
}
return sLogs;
}
public static void setLogs(ILogs logs) {
sLogs = logs;
}
/**
* Print logs of verbose level
*/
public static int v(String tag, String msg) {
return getLogs().verbose(tag, msg);
}
/**
* Print logs of verbose level
*/
public static int v(String tag, String msg, Throwable tr) {
return getLogs().verbose(tag, msg, tr);
}
/**
* Print logs of debug level
*/
public static int d(String tag, String msg) {
return getLogs().debug(tag, msg);
}
/**
* Print logs of debug level
*/
public static int d(String tag, String msg, Throwable tr) {
return getLogs().debug(tag, msg, tr);
}
/**
* Print logs of info level
*/
public static int i(String tag, String msg) {
return getLogs().info(tag, msg);
}
/**
* Print logs of info level
*/
public static int i(String tag, String msg, Throwable tr) {
return getLogs().info(tag, msg, tr);
}
/**
* Print logs of warn level
*/
public static int w(String tag, String msg) {
return getLogs().warn(tag, msg);
}
/**
* Print logs of warn level
*/
public static int w(String tag, String msg, Throwable tr) {
return getLogs().warn(tag, msg, tr);
}
/**
* Print logs of error level
*/
public static int e(String tag, String msg) {
return getLogs().error(tag, msg);
}
/**
* Print logs of error level
*/
public static int e(String tag, String msg, Throwable tr) {
return getLogs().error(tag, msg, tr);
}
/**
* Print logs of verbose level
*/
public static int v(String msg) {
ILogs logs = getLogs();
if (!logs.isEnabled()) {
return 0;
}
return logs.verbose(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg);
}
/**
* Print logs of verbose level
*/
public static int v(String msg, Throwable tr) {
ILogs logs = getLogs();
if (!logs.isEnabled()) {
return 0;
}
return logs.verbose(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, tr);
}
/**
* Print logs of debug level
*/
public static int d(String msg) {
ILogs logs = getLogs();
if (!logs.isEnabled()) {
return 0;
}
return logs.debug(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg);
}
/**
* Print logs of debug level
*/
public static int d(String msg, Throwable tr) {
ILogs logs = getLogs();
if (!logs.isEnabled()) {
return 0;
}
return logs.debug(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, tr);
}
/**
* Print logs of info level
*/
public static int i(String msg) {
ILogs logs = getLogs();
if (!logs.isEnabled()) {
return 0;
}
return logs.info(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg);
}
/**
* Print logs of info level
*/
public static int i(String msg, Throwable tr) {
ILogs logs = getLogs();
if (!logs.isEnabled()) {
return 0;
}
return logs.info(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, tr);
}
/**
* Print logs of warn level
*/
public static int w(String msg) {
ILogs logs = getLogs();
if (!logs.isEnabled()) {
return 0;
}
return logs.warn(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg);
}
/**
* Print logs of warn level
*/
public static int w(String msg, Throwable tr) {
ILogs logs = getLogs();
if (!logs.isEnabled()) {
return 0;
}
return logs.warn(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, tr);
}
/**
* Print logs of error level
*/
public static int e(String msg) {
ILogs logs = getLogs();
if (!logs.isEnabled()) {
return 0;
}
return logs.error(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg);
}
/**
* Print logs of error level
*/
public static int e(String msg, Throwable tr) {
ILogs logs = getLogs();
if (!logs.isEnabled()) {
return 0;
}
return logs.error(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, tr);
}
protected boolean mEnabled = AppBuildConfig.DEBUG;
@Override
public int verbose(String tag, String msg) {
if (!mEnabled) {
return 0;
}
String log = generate(tag, msg, null);
System.out.println(log);
return log.length();
}
@Override
public int verbose(String tag, String msg, Throwable tr) {
if (!mEnabled) {
return 0;
}
String log = generate(tag, msg, tr);
System.out.println(log);
return log.length();
}
@Override
public int debug(String tag, String msg) {
if (!mEnabled) {
return 0;
}
String log = generate(tag, msg, null);
System.out.println(log);
return log.length();
}
@Override
public int debug(String tag, String msg, Throwable tr) {
if (!mEnabled) {
return 0;
}
String log = generate(tag, msg, tr);
System.out.println(log);
return log.length();
}
@Override
public int info(String tag, String msg) {
if (!mEnabled) {
return 0;
}
String log = generate(tag, msg, null);
System.out.println(log);
return log.length();
}
@Override
public int info(String tag, String msg, Throwable tr) {
if (!mEnabled) {
return 0;
}
String log = generate(tag, msg, tr);
System.out.println(log);
return log.length();
}
@Override
public int warn(String tag, String msg) {
if (!mEnabled) {
return 0;
}
String log = generate(tag, msg, null);
System.out.println(log);
return log.length();
}
@Override
public int warn(String tag, String msg, Throwable tr) {
if (!mEnabled) {
return 0;
}
String log = generate(tag, msg, tr);
System.out.println(log);
return log.length();
}
@Override
public int error(String tag, String msg) {
if (!mEnabled) {
return 0;
}
String log = generate(tag, msg, null);
System.err.println(log);
return log.length();
}
@Override
public int error(String tag, String msg, Throwable tr) {
if (!mEnabled) {
return 0;
}
String log = generate(tag, msg, tr);
System.err.println(log);
return log.length();
}
@Override
public int verbose(String msg) {
if (!mEnabled) {
return 0;
}
String log = generate(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, null);
System.out.println(log);
return log.length();
}
@Override
public int verbose(String msg, Throwable tr) {
if (!mEnabled) {
return 0;
}
String log = generate(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, tr);
System.out.println(log);
return log.length();
}
@Override
public int debug(String msg) {
if (!mEnabled) {
return 0;
}
String log = generate(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, null);
System.out.println(log);
return log.length();
}
@Override
public int debug(String msg, Throwable tr) {
if (!mEnabled) {
return 0;
}
String log = generate(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, tr);
System.out.println(log);
return log.length();
}
@Override
public int info(String msg) {
if (!mEnabled) {
return 0;
}
String log = generate(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, null);
System.out.println(log);
return log.length();
}
@Override
public int info(String msg, Throwable tr) {
if (!mEnabled) {
return 0;
}
String log = generate(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, tr);
System.out.println(log);
return log.length();
}
@Override
public int warn(String msg) {
if (!mEnabled) {
return 0;
}
String log = generate(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, null);
System.out.println(log);
return log.length();
}
@Override
public int warn(String msg, Throwable tr) {
if (!mEnabled) {
return 0;
}
String log = generate(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, tr);
System.out.println(log);
return log.length();
}
@Override
public int error(String msg) {
if (!mEnabled) {
return 0;
}
String log = generate(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, null);
System.err.println(log);
return log.length();
}
@Override
public int error(String msg, Throwable tr) {
if (!mEnabled) {
return 0;
}
String log = generate(StringUtil.getTag(StackTraceUtil.getCallerElement()), msg, tr);
System.err.println(log);
return log.length();
}
protected String generate(String tag, String msg, Throwable tr) {
StringBuilder sb = new StringBuilder();
sb.append("[");
sb.append(tag);
sb.append("] ");
sb.append(msg);
if (tr != null) {
sb.append("\n");
sb.append(StringUtil.printStackTrace(tr));
}
return sb.toString();
}
@Override
public boolean isEnabled() {
return mEnabled;
}
@Override
public void setEnabled(boolean enabled) {
mEnabled = enabled;
}
}