Closed shahwaiz90 closed 3 years ago
Does timber provides functionality to write logs in a file and have a file cap size on top of it? I made something like that, do I need to manually write the code to check for the file size limit? Timber not includes something like this? https://stackoverflow.com/questions/14539519/android-logcat-rotation-size-and-number-of-rotation-parameters/18694488
class FileLoggingTree @Inject constructor(var context: Context?, var fileLoggingEnabled: Boolean) : Timber.DebugTree() { override fun log(priority: Int, tag: String?, message: String, t: Throwable?) { try { if (fileLoggingEnabled) { val fileNameTimeStamp: String = SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(Date()) val logTimeStamp: String = SimpleDateFormat("E MMM dd yyyy 'at' hh:mm:ss:SSS aaa", Locale.getDefault()) .format(Date()) val fileName = "$fileNameTimeStamp.html" // Create file val file: File? = generateFile(context, fileName) // If file created or exists save logs if (file != null) { val writer = FileWriter(file, true) writer .append( "<p style=\"background:lightgray;\"><strong " + "style=\"background:lightblue;\"> " ) .append(logTimeStamp) .append(" : </strong><strong> ") .append(tag) .append("</strong> - ") .append(message) .append("</p>") writer.flush() writer.close() } } } catch (e: Exception) {} } fun deleteFileLogFolder(context: Context?): Boolean { return deleteLogFolder(context) } fun deleteLogFileByFileName(context: Context?, fileName: String): Boolean? { return deleteLogFile(context, fileName) } override fun createStackElementTag(element: StackTraceElement): String { // Add log statements line number to the log return super.createStackElementTag(element) + " - " + element.lineNumber } companion object { /* Helper method to create file*/ @Nullable private fun generateFile(context: Context?, fileName: String): File? { var file: File? = null // creating log folder inside data/data/mypackagename/files/ val root = File(context?.filesDir?.absolutePath, "log") var dirExists = true if (!root.exists()) { dirExists = root.mkdirs() } if (dirExists) { file = File(root, fileName) } return file } /* Helper method to delete already created file*/ @Nullable private fun deleteLogFile(context: Context?, fileName: String): Boolean? { var file: File? = null // creating log folder inside data/data/mypackagename/files/ val root = File(context?.filesDir?.absolutePath, "log") var dirExists = true if (!root.exists()) { dirExists = root.mkdirs() } if (dirExists) { file = File(root, fileName) } return file?.delete() } /* Helper method to delete log folder */ @Nullable private fun deleteLogFolder(context: Context?): Boolean { // creating log folder inside data/data/mypackagename/files/ val root = File(context?.filesDir?.absolutePath, "log") return root.delete() } } }
This is not implemented, and likely won't be. The strategy for what to do about stuff like this is tracked by #255. I suspect we'll have a few as samples but not part of the released artifact itself.
Thanks.
Does timber provides functionality to write logs in a file and have a file cap size on top of it? I made something like that, do I need to manually write the code to check for the file size limit? Timber not includes something like this? https://stackoverflow.com/questions/14539519/android-logcat-rotation-size-and-number-of-rotation-parameters/18694488