安卓:一个用来写登录文件的库



每次重新启动应用程序,或者当日志文件的数量足够时,我都必须编写日志文件并将其发送到服务器。经过互联网研究:我找到了Timber和java.util.logging.Logger。我想创建一个自定义的Timber树,并使用Logger来保存日志文件。有没有一个图书馆已经这样做了——也许是更好的方式?:D也许是tinylog?

这是我的poc:

private const val SIZE_LIMIT = 10000
private const val NB_FILE_LIMIT = 3
object TimberLogImplementation : TimberLog{
override fun init(context: Context) {
val path: String = File(context.getExternalFilesDir("MyLog"),"log").absolutePath
val TAG = "FileLoggerTree"
val fileHandler: FileHandler
val logger: Logger = MyLogger(TAG)
logger.level = Level.ALL
if (logger.handlers.isEmpty()) {
fileHandler = FileHandler(path, SIZE_LIMIT, NB_FILE_LIMIT, false)
fileHandler.formatter = SimpleFormatter()
logger.addHandler(fileHandler)
} else {
fileHandler = logger.handlers[0] as FileHandler
}
val fileLoggerTree =  FileLoggerTree(logger)
Timber.plant(fileLoggerTree)
}
}

class FileLoggerTree(
private val logger: Logger
) : Timber.Tree() {
override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
logger.log(fromPriorityToLevel(priority), message)
}
private fun fromPriorityToLevel(priority: Int): Level {
return when (priority) {
Log.VERBOSE -> Level.FINER
Log.DEBUG -> Level.FINE
Log.INFO -> Level.INFO
Log.WARN -> Level.WARNING
Log.ERROR -> Level.SEVERE
Log.ASSERT -> Level.SEVERE
else -> Level.FINEST
}
}
}
class MyLogger(name: String): Logger(name, null)

但我不知道是不是超大

这是一个具有FileLoggerTree:的Timber扩展库

https://github.com/bastienpaulfr/Treessence

试试这个自定义类,

public class ErrorLogWriter {
private static String FolderName = "folderName";
private static String logFileName = "filename.txt";
public static void appendLog(String formName, int lineNumber, String error) {
try {
File logFolder = new File("Directory path", FolderName);
if (!logFolder.exists()) {
logFolder.mkdirs();
}
File logFile = new File(logFolder, logFileName);
if (!logFile.exists()) {
logFile.createNewFile();
}
//BufferedWriter for performance, true to set append to file flag
BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true));
Calendar calendar = Calendar.getInstance();
buf.append(new SimpleDateFormat(Constants.DATE_FORMAT_TO_SAVE, Locale.getDefault()).format( calendar.getTime()));
buf.append(" - ");
buf.append(formName);
buf.append(" - ");
buf.append(String.valueOf(lineNumber));
buf.append(" - ");
buf.append(error);
buf.newLine();
buf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

最新更新