stringBuilder1.append(Integer.valueOf(str, 16));\r
stringBuilder1.append(",CELLID=");\r
stringBuilder1.append(Integer.valueOf(str1, 16));\r
- if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(), "cellInfoTest", stringBuilder1.toString());\r
+ if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(), "LBS", stringBuilder1.toString());\r
}\r
}\r
}\r
AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,delayTimeInMinutes, ACTION_SEND_EMEGENCY_LOCATION_STOP);\r
sb.append(" tEmegencyLocationSTOPAlarm "+ACTION_SEND_EMEGENCY_LOCATION_STOP);\r
ICLogger.i(sb.toString());\r
- if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(),"LocationAlarm",sb.toString());\r
+ if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString());\r
}\r
public void setLocationAlarm(int mod) {\r
// int mod=runtime.getLocationInstance().getWorkingMod();\r
locationClient.triggerLocationProcess();\r
\r
ICLogger.i(sb.toString());\r
- if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(),"LocationAlarm",sb.toString());\r
+ if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString());\r
}\r
\r
public void setHeartAlarm(){\r
sb.append(" setHeartAlarm "+HEART_ALARM+", cycle "+cycle);\r
// locationClient.triggerLocationProcess();\r
ICLogger.i(sb.toString());\r
- FileOutputUtil.fileOutput(runtime.getCacheDir(),"HeartAlarm",sb.toString());\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString());\r
\r
// AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM);\r
}\r
ICLogger.i(stringBuilder1.toString());\r
runtime.setTotalStepCount(CURRENT_STEP);\r
GSensorListener.getStepCountOver=false;\r
- if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(), "CURRENT_STEP", stringBuilder1.toString());\r
+// if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(), "CURRENT_STEP", stringBuilder1.toString());\r
}\r
};\r
\r
import android.app.Application;\r
import android.content.Context;\r
import android.content.res.Configuration;\r
-import android.os.Environment;\r
import android.os.Handler;\r
import android.support.multidex.MultiDex;\r
-import android.util.Log;\r
import android.util.SparseArray;\r
-\r
-\r
-import com.enqualcomm.support.BuildConfig;\r
-import com.enqualcomm.support.utils.StorageUtils;\r
-import com.sina.util.dnscache.DNSCache;\r
-\r
-import org.apache.log4j.Level;\r
-\r
-import java.io.File;\r
+import com.enqualcomm.support.utils.ICLogger;\r
import java.util.HashMap;\r
\r
\r
\r
public class ICApplication extends Application {\r
private static final String TAG = "protocol." + ICApplication.class.getSimpleName();\r
- private static final boolean DEBUG = BuildConfig.DEBUG;\r
+// private static final boolean DEBUG = BuildConfig.DEBUG;\r
\r
private static ICApplication instance=null;\r
\r
private static HashMap<String, SparseArray<Handler>> mConfigurationChangedHandlerHashMap = new HashMap<>();\r
\r
\r
- private static void log(String msg) {\r
- if (DEBUG) {\r
- Log.i(TAG, msg);\r
-// FileLoger.log(TAG, "", msg);\r
- }\r
- }\r
-\r
- private static void log(String funcName, String msg) {\r
- if (DEBUG) {\r
- Log.i(TAG, "[" + funcName + "]" + msg);\r
-// FileLoger.log(TAG, funcName, msg);\r
- }\r
- }\r
+// private static void log(String msg) {\r
+// if (DEBUG) {\r
+// Log.i(TAG, msg);\r
+//// FileLoger.log(TAG, "", msg);\r
+// }\r
+// }\r
+//\r
+// private static void log(String funcName, String msg) {\r
+// if (DEBUG) {\r
+// Log.i(TAG, "[" + funcName + "]" + msg);\r
+//// FileLoger.log(TAG, funcName, msg);\r
+// }\r
+// }\r
\r
@Override\r
public void onCreate() {\r
super.onCreate();\r
\r
- initLogger();\r
+ ICLogger.setContext(this.getApplicationContext());\r
+\r
String info = String.format("VERSION_CODE:%s, VERSION_NAME:%s",\r
BuildConfig.VERSION_CODE, BuildConfig.VERSION_NAME);\r
- log("onCreate", info);\r
- Log.i(TAG, "[onCreate]" + info);\r
+// log("onCreate", info);\r
+ ICLogger.i(TAG+"[onCreate]" + info);\r
\r
CrashHandler crashHandler = CrashHandler.getInstance();\r
crashHandler.init(getApplicationContext());\r
// log("softwareVersion:" + softwareVersion);\r
\r
}\r
- /**\r
- 初始化与配置Logger Log4j\r
- 日志信息格式中符号所代表的含义\r
- (1)-X号: X信息输出时左对齐。\r
- (2)%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL。\r
- (3)%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921。\r
- (4)%r: 输出自应用启动到输出该log信息耗费的毫秒数。\r
- (5)%c: 输出日志信息所属的类目,通常就是所在类的全名。\r
- (6)%t: 输出产生该日志事件的线程名。\r
- (7)%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)。\r
- (8)%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。\r
- (9)%%: 输出一个"%"字符。\r
- (10)%F: 输出日志消息产生时所在的文件名称。\r
- (11)%L: 输出代码中的行号。\r
- (12)%m: 输出代码中指定的消息,产生的日志具体信息。\r
- (13)%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行。\r
- 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:\r
- (1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。\r
- (2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。\r
- (3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。\r
- (4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。\r
- ————————————————\r
- 版权声明:本文为CSDN博主「King-zi」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。\r
- 原文链接:https://blog.csdn.net/zjclugger/article/details/51576156\r
- */\r
- private void initLogger(){\r
- LogConfigurator logConfigurator = new LogConfigurator();\r
-\r
- logConfigurator.setFileName(StorageUtils.getCacheDirectory(this.getApplicationContext()).getAbsolutePath()\r
- + File.separator + "log.txt"); // 日志存储路径,如果该路径没有会自动创建文件\r
- logConfigurator.setRootLevel(Level.DEBUG);\r
- logConfigurator.setLevel("log", Level.ERROR);\r
-// logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");\r
- logConfigurator.setFilePattern("%d %m%n ");\r
-// 02-29 16:28:38.195 4629-4658/com.enqualcomm.support E/com.enqualcomm.support.utils.ICLogger:\r
- logConfigurator.setMaxFileSize(1024 * 1024 * 20);\r
- logConfigurator.setImmediateFlush(true);\r
- logConfigurator.configure(); // 设置提交\r
- }\r
+\r
\r
public static ICApplication getInstance() {\r
return instance;\r
*/\r
@Override\r
public void onConfigurationChanged(Configuration newConfig) {\r
- log("onConfigurationChanged");\r
+ ICLogger.i("onConfigurationChanged");\r
super.onConfigurationChanged(newConfig);\r
\r
for (Object keyObj : mConfigurationChangedHandlerHashMap.keySet()) {\r
String key = (String) keyObj;\r
- Log.i("WatchApplication", "onConfigurationChanged, " + key);\r
+ ICLogger.i("WatchApplication"+ " onConfigurationChanged, " + key);\r
SparseArray<Handler> sparseArray = mConfigurationChangedHandlerHashMap.get(key);\r
if (sparseArray != null) {\r
Handler handler = sparseArray.valueAt(0);\r
*/\r
public void setConfigurationChangedHandler(String key, SparseArray<Handler> sparseArray) {\r
mConfigurationChangedHandlerHashMap.put(key, sparseArray);\r
- log("setConfigurationChangedHandler: " + key);\r
+ ICLogger.i("setConfigurationChangedHandler: " + key);\r
}\r
}\r
String logfile=cmdl[1];\r
\r
if (logfile.isEmpty()|| logfile.equals("all")) {\r
- String filelist[] = {"crashlog", "Nmea","APILog", "GPS", "LocationAlarm", "Battery", "log"};\r
+ String filelist[] = {"crashlog", "Nmea","APILog", "GPS", "alarmCycle", "Battery", "log"};\r
// String filelist[]={"APILog","LocationAlarm","Battery"};\r
String time = TimeUtil.getSystemTime3();\r
StringBuilder sb = new StringBuilder();\r
Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
public void call(Long param1Long) {\r
- sendSMS(phonenumber, "start Upload allLogfile [crashlog Nmea APILog log GPS LocationAlarm Battery] to " + Config.getFtpServer(mContext));\r
+ sendSMS(phonenumber, "start Upload allLogfile [crashlog Nmea APILog log GPS alarmCycle Battery] to " + Config.getFtpServer(mContext));\r
String logtime = TimeUtil.getSystemTime3();\r
for (String file : filelist) {\r
\r
this.runtime.setCellinfo(gsmSb.toString());\r
this.runtime.setCdmaInfo(null);\r
ICLogger.i("GsmCellLocation "+ gsmSb.toString());\r
- if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "onCellLocationChanged", gsmSb.toString());\r
+ if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "LBS", gsmSb.toString());\r
\r
List neighboringCell_list = telephonyManager.getNeighboringCellInfo();\r
if (neighboringCell_list != null && !neighboringCell_list.isEmpty()) {\r
this.runtime.setCellinfo(null);\r
this.runtime.setCdmaInfo(cdmaSB.toString());\r
\r
- if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "onCellLocationChanged", var8.toString());\r
+ if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "LBS", var8.toString());\r
return cdmaSB.toString();\r
\r
}\r
btnSimReload.setOnClickListener(new View.OnClickListener() {\r
@Override\r
public void onClick(View view) {\r
- SimSignalUtil.send_at_to_reload_simcard(CoreService.getInstance().runtime);\r
+\r
+\r
+\r
Util.ShowToast(CoreService.getInstance().runtime,"Reload SimCard!");\r
\r
}\r
@Override\r
public void onClick(View view) {\r
Intent intent=new Intent();\r
- intent.putExtra("smsCmd","#logctl#=upload,SDLogInfo:Android");\r
+ intent.putExtra("smsCmd","#logctl#=upload,SDLogInfo:Android/ic");\r
CoreService.getInstance().runtime.getContextProxy().sendBrodcast("com.enqualcomm.support.SMSCMD",intent);\r
}\r
});\r
stringBuilder.append("---lastAlarmTime=");\r
stringBuilder.append(lastAlarmTime);\r
ICLogger.i("AlarmWakeUp "+ stringBuilder.toString());\r
- if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmWakeUp", stringBuilder.toString());\r
+ if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", stringBuilder.toString());\r
} \r
}\r
\r
// EqcAlgorithmNative.native_EqcAlgorithmMethod4(0, 0, CellInfoUtil.BSSS, CellInfoUtil.MCC, CellInfoUtil.MNC, CellInfoUtil.LAC, CellInfoUtil.CELL_ID);\r
mRuntime.cellinfo = mCellInfo;\r
}\r
- if (Config.LOG_TOFILE)FileOutputUtil.fileOutput(mRuntime.getCacheDir(),"onCellLocationChanged", mCellInfo);\r
+ if (Config.LOG_TOFILE)FileOutputUtil.fileOutput(mRuntime.getCacheDir(),"LBS", mCellInfo);\r
CellInfoUtil.releaseWakeLock(mWakeLock);\r
ICLogger.i(" setCurrentAttachCellInfo " + mCellInfo);\r
\r
stringBuilder.append(CellInfoUtil.BSSS);\r
runtime.cellinfo = stringBuilder.toString();\r
// EqcAlgorithmNative.native_EqcAlgorithmMethod4(1, 0, CellInfoUtil.BSSS, CellInfoUtil.MCC, CellInfoUtil.MNC, CellInfoUtil.LAC, CellInfoUtil.CELL_ID);\r
- if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(mRuntime.getCacheDir(), "onCellLocationChanged", mRuntime.cellinfo);\r
+ if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(mRuntime.getCacheDir(), "LBS", mRuntime.cellinfo);\r
CellInfoUtil.releaseWakeLock(mWakeLock);\r
ICLogger.i(" setCurrentAttachCellInfo " + mCellInfo);\r
\r
}\r
public static void fileOutputRaw(File dir, String filename, String msg) {\r
// String str = TimeUtil.getSystemTime();\r
- if (msg!=null && msg.trim().length()>0) {\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append(filename);\r
- stringBuilder.append(".txt");\r
- File file = new File(dir, stringBuilder.toString());\r
- try {\r
- PrintStream printStream = new PrintStream(new FileOutputStream(file, true));\r
- StringBuilder stringBuilder1 = new StringBuilder();\r
- stringBuilder1.append(msg);\r
- printStream.println(stringBuilder1.toString());\r
- printStream.close();\r
\r
- } catch (FileNotFoundException e) {\r
- e.printStackTrace();\r
+ ICLogger.logRAWtoFile(filename,msg);\r
\r
- }\r
- }\r
+// if (msg!=null && msg.trim().length()>0) {\r
+// StringBuilder stringBuilder = new StringBuilder();\r
+// stringBuilder.append(filename);\r
+// stringBuilder.append(".txt");\r
+// File file = new File(dir, stringBuilder.toString());\r
+// try {\r
+// PrintStream printStream = new PrintStream(new FileOutputStream(file, true));\r
+// StringBuilder stringBuilder1 = new StringBuilder();\r
+// stringBuilder1.append(msg);\r
+// printStream.println(stringBuilder1.toString());\r
+// printStream.close();\r
+//\r
+// } catch (FileNotFoundException e) {\r
+// e.printStackTrace();\r
+//\r
+// }\r
+// }\r
}\r
public static void fileOutput(File dir, String filename, String msg) {\r
- String str = TimeUtil.getSystemTime();\r
- if (msg!=null && msg.trim().length()>0) {\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append(filename);\r
- stringBuilder.append(".txt");\r
- File file = new File(dir, stringBuilder.toString());\r
- try {\r
- PrintStream printStream = new PrintStream(new FileOutputStream(file, true));\r
- StringBuilder stringBuilder1 = new StringBuilder();\r
- stringBuilder1.append(str);\r
- stringBuilder1.append(" ");\r
- stringBuilder1.append(msg);\r
- printStream.println(stringBuilder1.toString());\r
- printStream.close();\r
- } catch (FileNotFoundException e) {\r
- e.printStackTrace();\r
- }\r
- }\r
+ ICLogger.logToFile(filename,msg);\r
}\r
}\r
\r
package com.enqualcomm.support.utils;\r
\r
-import android.util.Log;\r
+import android.content.Context;\r
\r
-import com.enqualcomm.support.Config;\r
-import com.enqualcomm.support.CoreService;\r
+import com.enqualcomm.support.ICApplication;\r
\r
+import org.apache.log4j.Appender;\r
+import org.apache.log4j.FileAppender;\r
+import org.apache.log4j.Layout;\r
import org.apache.log4j.Level;\r
import org.apache.log4j.Logger;\r
+import org.apache.log4j.PatternLayout;\r
+import org.apache.log4j.RollingFileAppender;\r
+import org.apache.log4j.spi.ErrorHandler;\r
+import org.apache.log4j.spi.Filter;\r
+import org.apache.log4j.spi.LoggingEvent;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+\r
+import de.mindpipe.android.logging.log4j.LogConfigurator;\r
+\r
+\r
\r
public class ICLogger {\r
\r
- private static Logger Log = Logger.getLogger(ICLogger.class);\r
-// private static java.util.logging.Logger originLog= java.util.logging.Logger.getLogger(ICLogger.class.getSimpleName());\r
+ private static boolean isInitConfig = false;\r
+ private static Context mContext=null;\r
+\r
+ private static Logger Log = null;\r
+ private static Logger GPS = null;\r
+ private static Logger Nmea = null;\r
+ private static Logger APILog = null;\r
+ private static Logger alarmCycle = null;\r
+ private static Logger Battery = null;\r
+ private static Logger LBS = null;\r
+ // private static java.util.logging.Logger originLog= java.util.logging.Logger.getLogger(ICLogger.class.getSimpleName());\r
private static final boolean DEBUG = true; //BuildConfig.DEBUG;\r
+\r
+ public static void setContext(Context context){\r
+ mContext=context;\r
+ }\r
private static String getFunctionName() {\r
StackTraceElement[] currentStack = Thread.currentThread().getStackTrace();\r
if (currentStack == null) {\r
return null;\r
}\r
}\r
- public static void i(String var0) {\r
- if (DEBUG && var0 !=null) {\r
- String var1 = getFunctionName();\r
- if (var1 != null) {\r
- StringBuilder sb = new StringBuilder();\r
- sb.append(var1);\r
- sb.append(" - ");\r
- sb.append(var0);\r
- log("WatchService", sb.toString());\r
- return;\r
- }\r
\r
- log("WatchService", var0.toString());\r
+ /**\r
+ 初始化与配置Logger Log4j\r
+ 日志信息格式中符号所代表的含义\r
+ (1)-X号: X信息输出时左对齐。\r
+ (2)%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL。\r
+ (3)%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921。\r
+ (4)%r: 输出自应用启动到输出该log信息耗费的毫秒数。\r
+ (5)%c: 输出日志信息所属的类目,通常就是所在类的全名。\r
+ (6)%t: 输出产生该日志事件的线程名。\r
+ (7)%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)。\r
+ (8)%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。\r
+ (9)%%: 输出一个"%"字符。\r
+ (10)%F: 输出日志消息产生时所在的文件名称。\r
+ (11)%L: 输出代码中的行号。\r
+ (12)%m: 输出代码中指定的消息,产生的日志具体信息。\r
+ (13)%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行。\r
+ 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:\r
+ (1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。\r
+ (2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。\r
+ (3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。\r
+ (4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。\r
+ */\r
+ private static void initConfig() {\r
+ if (!isInitConfig) {\r
+\r
+ LogConfigurator logConfigurator = new LogConfigurator();\r
+\r
+ String filename=StorageUtils.getExternalStorageLogDir()+ File.separator + "log.txt";\r
+ logConfigurator.setFileName(filename); // 日志存储路径,如果该路径没有会自动创建文件\r
+ logConfigurator.setRootLevel(Level.ALL);\r
+\r
+ logConfigurator.setLevel("log", Level.ALL);\r
+// logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");// 设置文件输出模式\r
+ logConfigurator.setFilePattern("%d %m%n ");// 设置文件输出模式\r
+// 02-29 16:28:38.195 4629-4658/com.enqualcomm.support E/com.enqualcomm.support.utils.ICLogger:\r
+ logConfigurator.setMaxBackupSize(3); // 设置最大备份数量\r
+ logConfigurator.setMaxFileSize(1024 * 1024 * 20);// 设置最大文件大小 20MB\r
+ logConfigurator.setImmediateFlush(true);// 设置是否立即刷新\r
+ logConfigurator.setUseFileAppender(true); // 设置用户文件输出器\r
+ logConfigurator.setInternalDebugging(false); //控制console是否输出\r
+ logConfigurator.setUseLogCatAppender(true);\r
+ logConfigurator.setLogCatPattern("%m%n");\r
+ logConfigurator.configure();// 设置提交\r
+\r
+\r
+// String logfilelist[]={"Log","GPS","Nmea","APILog","alarmCycle","Battery","LBS"};\r
+\r
+ //Log 和log目前是同一个配置\r
+ Log = Logger.getLogger("log");\r
+ Log.info("init Logger "+Log.getName());\r
+// Log.addAppender( getRollingFileAppender("log","%d %m%n "));\r
+// Log.info("init Logger "+Log.getName()+" "+((RollingFileAppender)Log.getAppender("log")).getFile());\r
+\r
+ GPS = Logger.getLogger("GPS");\r
+ GPS.addAppender( getRollingFileAppender("GPS","%d %m%n "));\r
+ GPS.info("init Logger "+GPS.getName()+" "+((RollingFileAppender)GPS.getAppender("GPS")).getFile());\r
+\r
+ Nmea = Logger.getLogger("Nmea");\r
+ Nmea.addAppender( getRollingFileAppender("Nmea","%m%n"));\r
+ Nmea.info("init Logger "+Nmea.getName()+" "+((RollingFileAppender)Nmea.getAppender("Nmea")).getFile());\r
+\r
+ APILog = Logger.getLogger("APILog");\r
+ APILog.addAppender( getRollingFileAppender("APILog","%d %m%n "));\r
+ APILog.info("init Logger "+APILog.getName()+" "+((RollingFileAppender)APILog.getAppender("APILog")).getFile());\r
+\r
+ alarmCycle = Logger.getLogger("alarmCycle");\r
+ alarmCycle.addAppender( getRollingFileAppender("alarmCycle","%d %m%n "));\r
+ alarmCycle.info("init Logger "+alarmCycle.getName()+" "+((RollingFileAppender)alarmCycle.getAppender("alarmCycle")).getFile());\r
+\r
+ Battery = Logger.getLogger("Battery");\r
+ Battery.addAppender( getRollingFileAppender("Battery","%d %m%n "));\r
+ Battery.info("init Logger "+Battery.getName()+" "+((RollingFileAppender)Battery.getAppender("Battery")).getFile());\r
+\r
+\r
+ LBS = Logger.getLogger("LBS");\r
+ LBS.addAppender( getRollingFileAppender("LBS","%d %m%n "));\r
+ LBS.info("init Logger "+LBS.getName()+" "+((RollingFileAppender)LBS.getAppender("LBS")).getFile());\r
+ isInitConfig = true;\r
+ }\r
}\r
\r
+ public static void logRAWtoFile(String filename,String msg){\r
+ if (filename.equals("Nmea")){\r
+ Nmea.info(msg);\r
+ }else if (filename.equals("LBS")) {\r
+ LBS.info(msg);\r
+ }else if (filename.equals("GPS")) {\r
+ GPS.info(msg);\r
+ }else if (filename.equals("APILog")) {\r
+ APILog.info(msg);\r
+ }else if (filename.equals("alarmCycle")) {\r
+ alarmCycle.info(msg);\r
+ }else if (filename.equals("Battery")) {\r
+ Battery.info(msg);\r
+ }else {\r
+ Log.info(msg);\r
+ }\r
+ }\r
+ public static void logToFile(String filename,String msg){\r
+ if (filename.equals("Nmea")){\r
+ Nmea.info(msg);\r
+ }else if (filename.equals("LBS")) {\r
+ LBS.info(msg);\r
+ }else if (filename.equals("GPS")) {\r
+ GPS.info(msg);\r
+ }else if (filename.equals("APILog")) {\r
+ APILog.info(msg);\r
+ }else if (filename.equals("alarmCycle")) {\r
+ alarmCycle.info(msg);\r
+ }else if (filename.equals("Battery")) {\r
+ Battery.info(msg);\r
+ }else {\r
+ Log.info(msg);\r
+ }\r
}\r
- public static void i(Object var0) {\r
- if (DEBUG && var0 !=null) {\r
- String var1 = getFunctionName();\r
- if (var1 != null) {\r
- StringBuilder sb = new StringBuilder();\r
- sb.append(var1);\r
- sb.append(" - ");\r
- sb.append(var0.toString());\r
- log("WatchService", sb.toString());\r
- return;\r
+ private static RollingFileAppender getRollingFileAppender(String name,String layoutpattern){\r
+ PatternLayout fileLayout = new PatternLayout(layoutpattern);\r
+ String filename=StorageUtils.getExternalStorageLogDir()+ File.separator + name+".txt";\r
+ RollingFileAppender rollingFileAppender= null;\r
+ try {\r
+ rollingFileAppender = new RollingFileAppender(fileLayout,filename);\r
+ } catch (IOException e) {\r
+ e.printStackTrace();\r
+ return null;\r
}\r
+ rollingFileAppender.setName(name);\r
+ rollingFileAppender.setMaxBackupIndex(3); //最多3个备份文件\r
+ rollingFileAppender.setMaximumFileSize(10*1024*1024); //10M 大小\r
+ rollingFileAppender.setImmediateFlush(true);\r
\r
- log("WatchService", var0.toString());\r
+ return rollingFileAppender;\r
}\r
\r
- }\r
- public static void log(String TAG, String msg) {\r
- if (DEBUG) {\r
- Log.error(TAG+ " "+msg);\r
-// originLog.warning(TAG+msg);\r
-// if (CoreService.getInstance()!=null) {\r
-// if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(CoreService.getInstance().getRuntime().getCacheDir(), "logic", TAG + " " + msg);\r
-// }\r
+ public static void v(String msg) {\r
+ initConfig();\r
+ if (Log!=null)\r
+ Log.debug(buildMessage(msg));\r
+ }\r
+\r
+ public static void v(String msg, Throwable thr) {\r
+ initConfig();\r
+ if (Log!=null)\r
+ Log.debug(buildMessage(msg), thr);\r
+ }\r
+\r
+ public static void d(String msg) {\r
+ initConfig();\r
+ if (Log!=null)\r
+ Log.debug(buildMessage(msg));\r
+ }\r
+\r
+ public static void d(String msg, Throwable thr) {\r
+ initConfig();\r
+ if (Log!=null)\r
+ Log.debug(buildMessage(msg), thr);\r
+ }\r
+\r
+ public static void i(String msg) {\r
+ initConfig();\r
+ if (Log!=null)\r
+ Log.info(buildMessage(msg));\r
}\r
\r
+ public static void i(String msg, Throwable thr) {\r
+ initConfig();\r
+ if (Log!=null)\r
+ Log.info(buildMessage(msg), thr);\r
+ }\r
\r
+ public static void w(String msg) {\r
+ initConfig();\r
+ if (Log!=null)\r
+ Log.warn(buildMessage(msg));\r
+ }\r
+\r
+ public static void w(String msg, Throwable thr) {\r
+ initConfig();\r
+ if (Log!=null)\r
+ Log.warn(buildMessage(msg), thr);\r
+ }\r
+\r
+ public static void w(Throwable thr) {\r
+ initConfig();\r
+ if (Log!=null)\r
+ Log.warn(buildMessage(""), thr);\r
+ }\r
+\r
+ public static void e(String msg) {\r
+ initConfig();\r
+ if (Log!=null)\r
+ Log.error(buildMessage(msg));\r
+ }\r
+\r
+ public static void e(String msg, Throwable thr) {\r
+ initConfig();\r
+ if (Log!=null)\r
+ Log.error(buildMessage(msg), thr);\r
+ }\r
+\r
+ /**\r
+ * 生成消息\r
+ * @param msg\r
+ * @return\r
+ */\r
+ protected static String buildMessage(String msg) {\r
+ initConfig();\r
+ if (DEBUG && msg !=null) {\r
+ String var1 = getFunctionName();\r
+ if (var1 != null) {\r
+ StringBuilder sb = new StringBuilder();\r
+ sb.append(var1);\r
+ sb.append(" - ");\r
+ sb.append(msg);\r
+ return sb.toString();\r
+ }else{\r
+ return "msg is null";\r
+ }\r
+ }else{\r
+ return "msg is null";\r
+ }\r
+ }\r
+ public static void log(String TAG, String msg) {\r
+ if (DEBUG) {\r
+ if (Log!=null)Log.debug(TAG+ " "+msg);\r
+\r
+ }\r
}\r
\r
public static void log(String TAG,String funcName, String msg) {\r
if (DEBUG) {\r
- Log.error(TAG+ " [" + funcName + "]" + msg);\r
-// originLog.warning(TAG+ "[" + funcName + "]" + msg);\r
-// if (CoreService.getInstance()!=null) {\r
-// if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(CoreService.getInstance().getRuntime().getCacheDir(), "logic", TAG + " " + "[" + funcName + "]" + msg);\r
-// }\r
+ if (Log!=null)\r
+ Log.debug(TAG + " [" + funcName + "]" + msg);\r
+\r
}\r
}\r
+\r
}\r
\r
private StorageUtils() {
}
+ public static String getExternalStorageLogDir() {
+
+ if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
+ File dir = new File(Environment.getExternalStorageDirectory().getPath(), "Android/ic/icprotocol");
+ String path = dir.getPath();
+ if (!dir.exists()) {
+ dir.mkdirs();
+ }
+ return path;
+ }
+ return "/storage/emulated/0/Android/ic/icprotocol";
+ }
/**
* Returns application cache directory. Cache directory will be created on SD card
* <i>("/Android/data/[app_package_name]/cache")</i> if card is mounted and app has appropriate permission. Else -
<TextView
android:id="@+id/textViewVersion"
- android:layout_width="60dp"
+ android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Version"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:text="ReCon" />
+ android:text="重启服务" />
<Button
android:id="@+id/btn_tools"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:text="Tools" />
+ android:text="工具" />
</LinearLayout>
<HorizontalScrollView
android:layout_width="wrap_content"\r
android:layout_height="wrap_content"\r
android:layout_weight="1"\r
- android:text="UploadLog" />\r
+ android:text="上传日志" />\r
\r
<Button\r
android:id="@+id/btn_simReset"\r
android:layout_width="wrap_content"\r
android:layout_height="wrap_content"\r
android:layout_weight="1"\r
- android:text="SimReset" />\r
+ android:text="重置SIM" />\r
\r
<Button\r
android:id="@+id/btn_sim2"\r
android:layout_width="wrap_content"\r
android:layout_height="wrap_content"\r
android:layout_weight="1"\r
- android:text="SIMRELoad" />\r
+ android:text="GPS状态" />\r
</LinearLayout>\r
\r
<LinearLayout\r
android:layout_width="wrap_content"\r
android:layout_height="wrap_content"\r
android:layout_weight="1"\r
- android:text="Mode3" />\r
+ android:text="模式3" />\r
\r
<Button\r
android:id="@+id/btn_location530"\r
android:layout_width="wrap_content"\r
android:layout_height="wrap_content"\r
android:layout_weight="1"\r
- android:text="Mode5.30" />\r
+ android:text="模式5.30" />\r
\r
<Button\r
android:id="@+id/btn_location1"\r
android:layout_width="wrap_content"\r
android:layout_height="wrap_content"\r
android:layout_weight="1"\r
- android:text="Mode1" />\r
+ android:text="模式1" />\r
</LinearLayout>\r
\r
</LinearLayout>
\ No newline at end of file