You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Android-Download/Aria/src/main/java/com/arialyy/aria/util/ALog.java

153 lines
4.5 KiB

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.arialyy.aria.util;
import android.text.TextUtils;
import android.util.Log;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* Created by Aria.Lao on 2017/10/25.
* Aria日志工具
*/
public class ALog {
public static final boolean DEBUG = true;
public static final int LOG_LEVEL_VERBOSE = 2;
public static final int LOG_LEVEL_DEBUG = 3;
public static final int LOG_LEVEL_INFO = 4;
public static final int LOG_LEVEL_WARN = 5;
public static final int LOG_LEVEL_ERROR = 6;
public static final int LOG_LEVEL_ASSERT = 7;
public static final int LOG_CLOSE = 8;
public static final int LOG_DEFAULT = LOG_LEVEL_DEBUG;
public static int LOG_LEVEL = LOG_DEFAULT;
public static int v(String tag, String msg) {
return println(Log.VERBOSE, tag, msg);
}
public static int d(String tag, String msg) {
return println(Log.DEBUG, tag, msg);
}
public static int i(String tag, String msg) {
return println(Log.INFO, tag, msg);
}
public static int w(String tag, String msg) {
return println(Log.WARN, tag, msg);
}
public static int e(String tag, String msg) {
return println(Log.ERROR, tag, msg);
}
public static int e(String tag, Throwable e) {
String msg = getExceptionString(e);
ErrorHelp.saveError(tag, "", msg);
return println(Log.ERROR, tag, msg);
}
/**
* 打印MAp,debug级别日志
*/
public static void m(String tag, Map map) {
if (LOG_LEVEL <= Log.DEBUG) {
Set set = map.entrySet();
if (set.size() < 1) {
d(tag, "[]");
return;
}
int i = 0;
String[] s = new String[set.size()];
for (Object aSet : set) {
Map.Entry entry = (Map.Entry) aSet;
s[i] = entry.getKey() + " = " + entry.getValue() + ",\n";
i++;
}
println(Log.DEBUG, tag, Arrays.toString(s));
}
}
/**
* 打印JSON,debug级别日志
*/
public static void j(String tag, String jsonStr) {
if (LOG_LEVEL <= Log.DEBUG) {
String message;
try {
if (jsonStr.startsWith("{")) {
JSONObject jsonObject = new JSONObject(jsonStr);
message = jsonObject.toString(4); //这个是核心方法
} else if (jsonStr.startsWith("[")) {
JSONArray jsonArray = new JSONArray(jsonStr);
message = jsonArray.toString(4);
} else {
message = jsonStr;
}
} catch (JSONException e) {
message = jsonStr;
}
println(Log.DEBUG, tag, message);
}
}
/**
* 将异常信息转换为字符串
*/
public static String getExceptionString(Throwable ex) {
if (ex == null) {
return "";
}
StringBuilder err = new StringBuilder();
err.append("ExceptionDetailed:\n");
err.append("====================Exception Info====================\n");
err.append(ex.toString());
err.append("\n");
StackTraceElement[] stack = ex.getStackTrace();
for (StackTraceElement stackTraceElement : stack) {
err.append(stackTraceElement.toString()).append("\n");
}
Throwable cause = ex.getCause();
if (cause != null) {
err.append("【Caused by】: ");
err.append(cause.toString());
err.append("\n");
StackTraceElement[] stackTrace = cause.getStackTrace();
for (StackTraceElement stackTraceElement : stackTrace) {
err.append(stackTraceElement.toString()).append("\n");
}
}
err.append("===================================================");
return err.toString();
}
private static int println(int level, String tag, String msg) {
if (LOG_LEVEL <= level) {
return Log.println(level, tag, TextUtils.isEmpty(msg) ? "null" : msg);
} else {
return -1;
}
}
}