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]);
boolean isFileCreated = false;
- if (!folder.exists()) {
- folder.mkdirs();
+ 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;
+
+ 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();
}
- }catch (IOException e){
+
+ // 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() {
- if (logFile != null) {
- isEnabled = false;
+ if (mLogFile != null) {
try {
- buf = new BufferedWriter(new FileWriter(logFile, false));
- buf.append("");
- 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) {
- String logPath = Environment.getExternalStorageDirectory()+File.separator+"owncloud"+File.separator+"log";
- startLogging(logPath);
- String timeStamp = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime());
+ String logPath = Environment.getExternalStorageDirectory()+File.separator+"owncloud"+File.separator+"log";
+ startLogging(logPath);
+ String timeStamp = new SimpleDateFormat(SIMPLE_DATE_FORMAT).format(Calendar.getInstance().getTime());
- try {
- buf = new BufferedWriter(new FileWriter(logFile, true));
- buf.write(timeStamp + " -> " +text);
- buf.newLine();
- buf.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
+ try {
+ mBuf = new BufferedWriter(new FileWriter(mLogFile, true));
+ mBuf.write(timeStamp + " -> " +text);
+ mBuf.newLine();
+ mBuf.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
}
}
-
-
-
-
-
-
-
-
-}