add lock for ICLogger init.
authorTrillGates <williamtrillgates@gmail.com>
Mon, 13 Sep 2021 08:47:04 +0000 (16:47 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Mon, 13 Sep 2021 08:47:04 +0000 (16:47 +0800)
app/src/main/java/com/enqualcomm/support/utils/ICLogger.java

index 581e0bd..208c980 100644 (file)
@@ -57,6 +57,9 @@ public class ICLogger {
         return null;
     }
 
+
+    private static final Object mLock = new Object();
+
     /**
      * 初始化与配置Logger   Log4j
      * 日志信息格式中符号所代表的含义
@@ -80,60 +83,63 @@ public class ICLogger {
      * (4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。
      */
     private static void initConfig() {
+        //用double check 提高效率
         if (!isInitConfig) {
-
-            LogConfigurator logConfigurator = new LogConfigurator();
-
-            String filename = StorageUtils.getExternalStorageLogDir() + File.separator + "log.txt";
-            logConfigurator.setFileName(filename);                // 日志存储路径,如果该路径没有会自动创建文件
-            logConfigurator.setRootLevel(Level.ALL);
-            logConfigurator.setLevel("log", Level.ALL);
+            return;
+        }
+        synchronized (mLock) {
+            if (!isInitConfig) {
+                isInitConfig = true;
+                LogConfigurator logConfigurator = new LogConfigurator();
+
+                String filename = StorageUtils.getExternalStorageLogDir() + File.separator + "log.txt";
+                logConfigurator.setFileName(filename);                // 日志存储路径,如果该路径没有会自动创建文件
+                logConfigurator.setRootLevel(Level.ALL);
+                logConfigurator.setLevel("log", Level.ALL);
 //        logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");// 设置文件输出模式
-            logConfigurator.setFilePattern("%d %m%n ");// 设置文件输出模式
+                logConfigurator.setFilePattern("%d %m%n ");// 设置文件输出模式
 //        02-29 16:28:38.195 4629-4658/com.enqualcomm.support E/com.enqualcomm.support.utils.ICLogger:
-            logConfigurator.setMaxBackupSize(2); // 设置最大备份数量
-            logConfigurator.setMaxFileSize(1024 * 1024 * 20);// 设置最大文件大小  20MB
-            logConfigurator.setImmediateFlush(true);// 设置是否立即刷新
-            logConfigurator.setUseFileAppender(true); // 设置用户文件输出器
-            logConfigurator.setInternalDebugging(false); //控制console是否输出
-            logConfigurator.setUseLogCatAppender(true);
-            logConfigurator.setLogCatPattern("%m%n");
-            logConfigurator.configure();// 设置提交
-
-
+                logConfigurator.setMaxBackupSize(2); // 设置最大备份数量
+                logConfigurator.setMaxFileSize(1024 * 1024 * 20);// 设置最大文件大小  20MB
+                logConfigurator.setImmediateFlush(true);// 设置是否立即刷新
+                logConfigurator.setUseFileAppender(true); // 设置用户文件输出器
+                logConfigurator.setInternalDebugging(false); //控制console是否输出
+                logConfigurator.setUseLogCatAppender(true);
+                logConfigurator.setLogCatPattern("%m%n");
+                logConfigurator.configure();// 设置提交
+                android.util.Log.d("CATCH", android.util.Log.getStackTraceString(new ThreadDeath()));
 //        String logfilelist[]={"Log","GPS","Nmea","APILog","alarmCycle","Battery","LBS"};
-
-            //Log 和log目前是同一个配置
-            Log = Logger.getLogger("log");
-            Log.info("init Logger " + Log.getName());
+                //Log 和log目前是同一个配置
+                Log = Logger.getLogger("log");
+                Log.info("init Logger " + Log.getName());
 //        Log.addAppender( getRollingFileAppender("log","%d %m%n "));
 //        Log.info("init Logger "+Log.getName()+" "+((RollingFileAppender)Log.getAppender("log")).getFile());
 
-            GPS = Logger.getLogger("GPS");
-            GPS.addAppender(getRollingFileAppender("GPS", "%d %m%n "));
-            GPS.info("init Logger " + GPS.getName() + " " + ((RollingFileAppender) GPS.getAppender("GPS")).getFile());
+                GPS = Logger.getLogger("GPS");
+                GPS.addAppender(getRollingFileAppender("GPS", "%d %m%n "));
+                GPS.info("init Logger " + GPS.getName() + " " + ((RollingFileAppender) GPS.getAppender("GPS")).getFile());
 
-            Nmea = Logger.getLogger("Nmea");
-            Nmea.addAppender(getRollingFileAppender("Nmea", "%m%n"));
-            Nmea.info("init Logger " + Nmea.getName() + " " + ((RollingFileAppender) Nmea.getAppender("Nmea")).getFile());
+                Nmea = Logger.getLogger("Nmea");
+                Nmea.addAppender(getRollingFileAppender("Nmea", "%m%n"));
+                Nmea.info("init Logger " + Nmea.getName() + " " + ((RollingFileAppender) Nmea.getAppender("Nmea")).getFile());
 
-            APILog = Logger.getLogger("APILog");
-            APILog.addAppender(getRollingFileAppender("APILog", "%d %m%n "));
-            APILog.info("init Logger " + APILog.getName() + " " + ((RollingFileAppender) APILog.getAppender("APILog")).getFile());
+                APILog = Logger.getLogger("APILog");
+                APILog.addAppender(getRollingFileAppender("APILog", "%d %m%n "));
+                APILog.info("init Logger " + APILog.getName() + " " + ((RollingFileAppender) APILog.getAppender("APILog")).getFile());
 
-            alarmCycle = Logger.getLogger("alarmCycle");
-            alarmCycle.addAppender(getRollingFileAppender("alarmCycle", "%d %m%n "));
-            alarmCycle.info("init Logger " + alarmCycle.getName() + " " + ((RollingFileAppender) alarmCycle.getAppender("alarmCycle")).getFile());
+                alarmCycle = Logger.getLogger("alarmCycle");
+                alarmCycle.addAppender(getRollingFileAppender("alarmCycle", "%d %m%n "));
+                alarmCycle.info("init Logger " + alarmCycle.getName() + " " + ((RollingFileAppender) alarmCycle.getAppender("alarmCycle")).getFile());
 
-            Battery = Logger.getLogger("Battery");
-            Battery.addAppender(getRollingFileAppender("Battery", "%d %m%n "));
-            Battery.info("init Logger " + Battery.getName() + " " + ((RollingFileAppender) Battery.getAppender("Battery")).getFile());
+                Battery = Logger.getLogger("Battery");
+                Battery.addAppender(getRollingFileAppender("Battery", "%d %m%n "));
+                Battery.info("init Logger " + Battery.getName() + " " + ((RollingFileAppender) Battery.getAppender("Battery")).getFile());
 
 
-            LBS = Logger.getLogger("LBS");
-            LBS.addAppender(getRollingFileAppender("LBS", "%d %m%n "));
-            LBS.info("init Logger " + LBS.getName() + " " + ((RollingFileAppender) LBS.getAppender("LBS")).getFile());
-            isInitConfig = true;
+                LBS = Logger.getLogger("LBS");
+                LBS.addAppender(getRollingFileAppender("LBS", "%d %m%n "));
+                LBS.info("init Logger " + LBS.getName() + " " + ((RollingFileAppender) LBS.getAppender("LBS")).getFile());
+            }
         }
     }