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.util.Log;
-
public class Log_OC {
-
+ private static final String SIMPLE_DATE_FORMAT = "yyyy/MM/dd HH:mm:ss";
+ private static final long MAX_FILE_SIZE = 1000000; // 1MB
+
+ private static File mLogFile;
+ private static File mFolder;
+ private static BufferedWriter mBuf;
+
+ private static String[] mLogFileNames = {"currentLog.txt", "olderLog.txt"};
+ private static String mLogPath = FileStorageUtils.getLogPath();
+
+ 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){
Log.wtf(TAG,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 (old logs)
+ File olderFile = new File(mFolder + File.separator + mLogFileNames[1]);
+ if (mLogFile.exists()) {
+ mLogFile.renameTo(olderFile);
+ }
+
+ // 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();
}
}
- 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;
- try {
- buf.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
+ /**
+ * Delete history logging
+ */
+ public static void deleteHistoryLogging() {
+ File folderLogs = new File(mFolder + File.separator);
+ if(folderLogs.isDirectory()){
+ String[] myFiles = folderLogs.list();
+ for (int i=0; i<myFiles.length; i++) {
+ File myFile = new File(folderLogs, myFiles[i]);
+ myFile.delete();
+ }
}
-
}
+ /**
+ * 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();
- }
- }
-}
+ startLogging(mLogPath);
+ String timeStamp = new SimpleDateFormat(SIMPLE_DATE_FORMAT).format(Calendar.getInstance().getTime());
-
-
+ try {
+ mBuf = new BufferedWriter(new FileWriter(mLogFile, true));
+ mBuf.newLine();
+ mBuf.write(timeStamp);
+ mBuf.newLine();
+ mBuf.write(text);
+ mBuf.newLine();
+ mBuf.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
-
+ public static String[] getLogFileNames() {
+ return mLogFileNames;
+ }
-
-
+ public static void setmLogFileNames(String[] logFileNames) {
+ Log_OC.mLogFileNames = logFileNames;
+ }
}