package com.banking.xc.utils;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Date;
import android.os.Environment;
import android.os.Process;
import com.banking.xc.config.Configuration;
public class Log {
private static boolean printLog = Boolean.parseBoolean(Configuration.getProperty(Configuration.PRINT_LOG, "false"));
public static boolean D = printLog ? Boolean.parseBoolean(Configuration.getProperty(Configuration.DEBUG_LOG, "false")) : false;
public static boolean V = printLog ? Boolean.parseBoolean(Configuration.getProperty(Configuration.VIEW_LOG, "false")) : false;
public static boolean I = printLog ? Boolean.parseBoolean(Configuration.getProperty(Configuration.INFO_LOG, "false")) : false;
public static boolean W = printLog ? Boolean.parseBoolean(Configuration.getProperty(Configuration.WARN_LOG, "false")) : false;
public static boolean E = printLog ? Boolean.parseBoolean(Configuration.getProperty(Configuration.ERROR_LOG, "false")) : false;
private static final int LOG_CAT_DATA_LENGTH = 1500;//经测试,logcat中打印日志一条最多为3300+个字符,3000->2000
// 日志存储目录
public static final String LOG_FILE = Environment.getExternalStorageDirectory() + "/banking_log.txt";
// 是否是测试模式
private static RandomAccessFile accessFile;
public static void d(String tag, String msg) {
if (!printLog) {
return;
}
android.util.Log.d(tag, "tid:" + Process.myTid() + "; -->" + msg);
}
public static void d(String tag, String msg, Throwable tr) {
if (!printLog) {
return;
}
android.util.Log.d(tag, msg, tr);
}
public static void dAll(String tag,String msgIns,String msg){
if (!printLog) {
return;
}
if(msg.length() <= LOG_CAT_DATA_LENGTH){
d(tag,msgIns+msg);
return;
}
float length1 = msg.length()/LOG_CAT_DATA_LENGTH;
if(length1>(int)length1){
length1 += 1;
}
final int length = (int)length1;
int i = 0;
for(;i<length-1;i++){
d(tag,msgIns+"第"+i+"段"+msg.substring(i*LOG_CAT_DATA_LENGTH,(i+1)*LOG_CAT_DATA_LENGTH));
}
d(tag,msgIns+"第"+i+"段"+msg.substring(i*LOG_CAT_DATA_LENGTH,msg.length()));
}
public static void v(String tag, String msg) {
if (!printLog) {
return;
}
android.util.Log.v(tag, msg);
}
public static void v(String tag, String msg, Throwable tr) {
if (!printLog) {
return;
}
android.util.Log.v(tag, msg, tr);
}
public static void i(String tag, String msg) {
if (!printLog) {
return;
}
android.util.Log.i(tag, msg);
}
public static void i(String tag, String msg, Throwable tr) {
if (!printLog) {
return;
}
android.util.Log.i(tag, msg, tr);
}
public static void w(String tag, String msg) {
if (!printLog) {
return;
}
android.util.Log.w(tag, msg);
}
public static void w(String tag, Throwable tr) {
if (!printLog) {
return;
}
android.util.Log.w(tag, tr);
}
public static void w(String tag, String msg, Throwable tr) {
if (!printLog) {
return;
}
android.util.Log.w(tag, msg, tr);
}
public static void e(String tag, String msg) {
if (!printLog) {
return;
}
android.util.Log.e(tag, msg);
}
public static void e(String tag, String msg, Throwable tr) {
if (!printLog) {
return;
}
android.util.Log.e(tag, msg, tr);
}
public static void saveLog(String msg){
try {
if (accessFile == null) {
accessFile = new RandomAccessFile(LOG_FILE, "rw");
}
long fileLength = accessFile.length();
// 将写文件指针移到文件尾。
//accessFile.
accessFile.seek(fileLength);
//accessFile.writeBytes(FormatUtils.formatDate(new Date()) + ":");
accessFile.writeBytes(msg);
//accessFile.writeChars(msg);
accessFile.writeBytes("\r\n");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}