LogFileManager.java 3.59 KB
package com.crashlytics.android.core;

import android.content.Context;
import io.fabric.sdk.android.Fabric;
import io.fabric.sdk.android.Logger;
import io.fabric.sdk.android.services.common.CommonUtils;
import io.fabric.sdk.android.services.persistence.FileStore;
import java.io.File;
import java.util.Set;

class LogFileManager
{
  private static final String COLLECT_CUSTOM_LOGS = "com.crashlytics.CollectCustomLogs";
  private static final String DIRECTORY_NAME = "log-files";
  private static final String LOGFILE_EXT = ".temp";
  private static final String LOGFILE_PREFIX = "crashlytics-userlog-";
  static final int MAX_LOG_SIZE = 65536;
  private static final NoopLogStore NOOP_LOG_STORE = new NoopLogStore(null);
  private final Context context;
  private FileLogStore currentLog;
  private final FileStore fileStore;
  
  public LogFileManager(Context paramContext, FileStore paramFileStore)
  {
    this(paramContext, paramFileStore, null);
  }
  
  public LogFileManager(Context paramContext, FileStore paramFileStore, String paramString)
  {
    this.context = paramContext;
    this.fileStore = paramFileStore;
    this.currentLog = NOOP_LOG_STORE;
    setCurrentSession(paramString);
  }
  
  private File getLogFileDir()
  {
    File localFile = new File(this.fileStore.getFilesDir(), "log-files");
    if (!localFile.exists()) {
      localFile.mkdirs();
    }
    return localFile;
  }
  
  private String getSessionIdForFile(File paramFile)
  {
    paramFile = paramFile.getName();
    int i = paramFile.lastIndexOf(".temp");
    if (i == -1) {
      return paramFile;
    }
    return paramFile.substring(20, i);
  }
  
  private File getWorkingFileForSession(String paramString)
  {
    paramString = "crashlytics-userlog-" + paramString + ".temp";
    return new File(getLogFileDir(), paramString);
  }
  
  public void clearLog()
  {
    this.currentLog.deleteLogFile();
  }
  
  public void discardOldLogFiles(Set<String> paramSet)
  {
    File[] arrayOfFile = getLogFileDir().listFiles();
    if (arrayOfFile != null)
    {
      int j = arrayOfFile.length;
      int i = 0;
      while (i < j)
      {
        File localFile = arrayOfFile[i];
        if (!paramSet.contains(getSessionIdForFile(localFile))) {
          localFile.delete();
        }
        i += 1;
      }
    }
  }
  
  public ByteString getByteStringForLog()
  {
    return this.currentLog.getLogAsByteString();
  }
  
  public final void setCurrentSession(String paramString)
  {
    this.currentLog.closeLogFile();
    this.currentLog = NOOP_LOG_STORE;
    if (paramString == null) {
      return;
    }
    if (!CommonUtils.getBooleanResourceValue(this.context, "com.crashlytics.CollectCustomLogs", true))
    {
      Fabric.getLogger().d("CrashlyticsCore", "Preferences requested no custom logs. Aborting log file creation.");
      return;
    }
    setLogFile(getWorkingFileForSession(paramString), 65536);
  }
  
  void setLogFile(File paramFile, int paramInt)
  {
    this.currentLog = new QueueFileLogStore(paramFile, paramInt);
  }
  
  public void writeToLog(long paramLong, String paramString)
  {
    this.currentLog.writeToLog(paramLong, paramString);
  }
  
  static final class NoopLogStore
    implements FileLogStore
  {
    public final void closeLogFile() {}
    
    public final void deleteLogFile() {}
    
    public final ByteString getLogAsByteString()
    {
      return null;
    }
    
    public final void writeToLog(long paramLong, String paramString) {}
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/com/crashlytics/android/core/LogFileManager.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */