import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-
-import com.owncloud.android.MainApp;
+import java.util.Calendar;
+import android.os.Environment;
import android.util.Log;
-
public class Log_OC {
-
+ private static final String SIMPLE_DATE_FORMAT = "HH:mm:ss";
+ private static final long MAX_FILE_SIZE = 10000;
+
+ private static File mLogFile;
+ private static File mFolder;
+ private static BufferedWriter mBuf;
+
+ private static String[] mLogFileNames = {"currentLog.txt", "backupLog.txt"};
+ private static boolean isMaxFileSizeReached = false;
- private static boolean isEnabled = false;
- private static File logFile;
- private static File folder;
- private static BufferedWriter buf;
-
public static void i(String TAG, String message){
- // Printing the message to LogCat console
- int a = Log.i(TAG, message);
+
// Write the log message to the file
- appendLog(TAG+" : "+message);
+ appendLog(TAG+" : "+ message);
}
public static void d(String TAG, String message){
appendLog(TAG+" : "+ message);
}
+ /**
+ * Start doing logging
+ * @param logPath : path of log file
+ */
public static void startLogging(String logPath) {
- folder = new File(logPath);
- logFile = new File(folder + File.separator + "log.txt");
+ mFolder = new File(logPath);
+ mLogFile = new File(mFolder + File.separator + mLogFileNames[0]);
- if (!folder.exists()) {
- folder.mkdirs();
- }
- if (logFile.exists()) {
- logFile.delete();
+ boolean isFileCreated = false;
+
+ if (!mFolder.exists()) {
+ mFolder.mkdirs();
+ isFileCreated = true;
+ Log.d("LOG_OC", "Log file created");
}
+
try {
- logFile.createNewFile();
- buf = new BufferedWriter(new FileWriter(logFile, true));
- isEnabled = true;
- appendPhoneInfo();
- }catch (IOException e){
+
+ if (isMaxFileSizeReached) {
+
+ // Move current log file info to another file
+ File secondLogFile = new File(mFolder + File.separator + mLogFileNames[1]);
+ if (mLogFile.exists()) {
+ mLogFile.renameTo(secondLogFile);
+ }
+
+ // Construct a new file for current log info
+ mLogFile = new File(mFolder + File.separator + mLogFileNames[0]);
+ isMaxFileSizeReached = false;
+ }
+
+ // Create the current log file if does not exist
+ mLogFile.createNewFile();
+ mBuf = new BufferedWriter(new FileWriter(mLogFile, true));
+ if (isFileCreated) {
+ appendPhoneInfo();
+ }
+
+ // Check if current log file size is bigger than the max file size defined
+ if (mLogFile.length() > MAX_FILE_SIZE) {
+ isMaxFileSizeReached = true;
+ }
+ } catch (IOException e) {
e.printStackTrace();
}
}
+ /**
+ * Stop doing logging
+ */
public static void stopLogging() {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
- String currentDateandTime = sdf.format(new Date());
- if (logFile != null) {
- logFile.renameTo(new File(folder + File.separator + MainApp.getLogName() + currentDateandTime+".log"));
-
- isEnabled = false;
+ if (mLogFile != null) {
try {
- buf.close();
+ mBuf = new BufferedWriter(new FileWriter(mLogFile, false));
+ mBuf.append("");
+ mBuf.close();
} catch (IOException e) {
e.printStackTrace();
}
-
}
-
}
+ /**
+ * Append the info of the device
+ */
private static void appendPhoneInfo() {
appendLog("Model : " + android.os.Build.MODEL);
appendLog("Brand : " + android.os.Build.BRAND);
appendLog("Version-Release : " + android.os.Build.VERSION.RELEASE);
}
+ /**
+ * Append to the log file the info passed
+ * @param text : text for adding to the log file
+ */
private static void appendLog(String text) {
- if (isEnabled) {
- try {
- buf.append(text);
- buf.newLine();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-}
-
-
-
-
-
+ String logPath = Environment.getExternalStorageDirectory()+File.separator+"owncloud"+File.separator+"log";
+ startLogging(logPath);
+ String timeStamp = new SimpleDateFormat(SIMPLE_DATE_FORMAT).format(Calendar.getInstance().getTime());
-
-
+ try {
+ mBuf = new BufferedWriter(new FileWriter(mLogFile, true));
+ mBuf.write(timeStamp + " -> " +text);
+ mBuf.newLine();
+ mBuf.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
}