mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
107 lines
3.8 KiB
Java
107 lines
3.8 KiB
Java
/*******************************************************************************
|
|
*
|
|
* Delta Chat Android
|
|
* (C) 2013-2016 Nikolai Kudashov
|
|
* (C) 2017 Björn Petersen
|
|
* Contact: r10s@b44t.com, http://b44t.com
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify it under
|
|
* the terms of the GNU General Public License as published by the Free Software
|
|
* Foundation, either version 3 of the License, or (at your option) any later
|
|
* version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with
|
|
* this program. If not, see http://www.gnu.org/licenses/ .
|
|
*
|
|
******************************************************************************/
|
|
|
|
|
|
package com.b44t.messenger;
|
|
|
|
import com.b44t.messenger.time.FastDateFormat;
|
|
|
|
import java.io.File;
|
|
import java.io.FileOutputStream;
|
|
import java.io.OutputStreamWriter;
|
|
import java.util.Locale;
|
|
|
|
public class FileLog {
|
|
private OutputStreamWriter streamWriter = null;
|
|
private FastDateFormat dateFormat = null;
|
|
private DispatchQueue logQueue = null;
|
|
private File currentFile = null;
|
|
|
|
private static volatile FileLog Instance = null;
|
|
public static FileLog getInstance() {
|
|
FileLog localInstance = Instance;
|
|
if (localInstance == null) {
|
|
synchronized (FileLog.class) {
|
|
localInstance = Instance;
|
|
if (localInstance == null) {
|
|
Instance = localInstance = new FileLog();
|
|
}
|
|
}
|
|
}
|
|
return localInstance;
|
|
}
|
|
|
|
public FileLog() {
|
|
dateFormat = FastDateFormat.getInstance("yyyyMMdd_HHmmss", Locale.US);
|
|
try {
|
|
File sdCard = ApplicationLoader.applicationContext.getExternalFilesDir(null);
|
|
if (sdCard == null) {
|
|
return;
|
|
}
|
|
File dir = new File(sdCard.getAbsolutePath() + "/logs");
|
|
dir.mkdirs();
|
|
currentFile = new File(dir, dateFormat.format(System.currentTimeMillis()) + ".txt");
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
try {
|
|
logQueue = new DispatchQueue("logQueue");
|
|
currentFile.createNewFile();
|
|
FileOutputStream stream = new FileOutputStream(currentFile);
|
|
streamWriter = new OutputStreamWriter(stream);
|
|
streamWriter.write("-----start log " + dateFormat.format(System.currentTimeMillis()) + "-----\n");
|
|
streamWriter.flush();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private static void log(final String what, final String tag, final String message)
|
|
{
|
|
if (getInstance().streamWriter != null) {
|
|
getInstance().logQueue.postRunnable(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
try {
|
|
getInstance().streamWriter.write(getInstance().dateFormat.format(System.currentTimeMillis()) + " " + what + "/" + tag + ": " + message + "\n");
|
|
getInstance().streamWriter.flush();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
public static void e(final String tag, final String message) {
|
|
log("E", tag, message);
|
|
}
|
|
|
|
public static void w(final String tag, final String message) {
|
|
log("W", tag, message);
|
|
}
|
|
|
|
public static void i(final String tag, final String message) {
|
|
log("I", tag, message);
|
|
}
|
|
}
|