pull/34/head
parent
0d6f48246f
commit
15306321b6
@ -0,0 +1,110 @@ |
|||||||
|
package io.legado.app.utils |
||||||
|
|
||||||
|
import android.annotation.SuppressLint |
||||||
|
import io.legado.app.App |
||||||
|
import io.legado.app.help.FileHelp |
||||||
|
import java.io.File |
||||||
|
import java.io.IOException |
||||||
|
import java.text.SimpleDateFormat |
||||||
|
import java.util.* |
||||||
|
import java.util.logging.* |
||||||
|
import java.util.logging.Formatter |
||||||
|
|
||||||
|
|
||||||
|
object LogUtils { |
||||||
|
|
||||||
|
private val logger: Logger by lazy { |
||||||
|
Logger.getGlobal().apply { |
||||||
|
addFileHandler( |
||||||
|
this, |
||||||
|
Level.INFO, |
||||||
|
FileHelp.getCachePath() + File.separator + System.currentTimeMillis() + ".log" |
||||||
|
) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
fun log(msg: String) { |
||||||
|
if (App.INSTANCE.getPrefBoolean("recordLog")) { |
||||||
|
logger.log(Level.INFO, msg) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 正常的日期格式 |
||||||
|
const val DATE_PATTERN_FULL = "yyyy-MM-dd HH:mm:ss" |
||||||
|
|
||||||
|
/** |
||||||
|
* 为log设置等级 |
||||||
|
* |
||||||
|
* @param log |
||||||
|
* @param level |
||||||
|
*/ |
||||||
|
fun setLogLevel(log: Logger, level: Level) { |
||||||
|
log.level = level |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 为log添加控制台handler |
||||||
|
* |
||||||
|
* @param log |
||||||
|
* 要添加handler的log |
||||||
|
* @param level |
||||||
|
* 控制台的输出等级 |
||||||
|
*/ |
||||||
|
fun addConsoleHandler(log: Logger, level: Level) { |
||||||
|
// 控制台输出的handler |
||||||
|
val consoleHandler = ConsoleHandler() |
||||||
|
// 设置控制台输出的等级(如果ConsoleHandler的等级高于或者等于log的level,则按照FileHandler的level输出到控制台,如果低于,则按照Log等级输出) |
||||||
|
consoleHandler.level = level |
||||||
|
|
||||||
|
// 添加控制台的handler |
||||||
|
log.addHandler(consoleHandler) |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 为log添加文件输出Handler |
||||||
|
* |
||||||
|
* @param log |
||||||
|
* 要添加文件输出handler的log |
||||||
|
* @param level |
||||||
|
* log输出等级 |
||||||
|
* @param filePath |
||||||
|
* 指定文件全路径 |
||||||
|
*/ |
||||||
|
fun addFileHandler(log: Logger, level: Level, filePath: String) { |
||||||
|
var fileHandler: FileHandler? = null |
||||||
|
try { |
||||||
|
fileHandler = FileHandler(filePath) |
||||||
|
// 设置输出文件的等级(如果FileHandler的等级高于或者等于log的level,则按照FileHandler的level输出到文件,如果低于,则按照Log等级输出) |
||||||
|
fileHandler.level = level |
||||||
|
fileHandler.formatter = object : Formatter() { |
||||||
|
override fun format(record: LogRecord): String { |
||||||
|
|
||||||
|
// 设置文件输出格式 |
||||||
|
return (getCurrentDateStr(DATE_PATTERN_FULL) + |
||||||
|
" - Level:" + record.level.name.substring(0, 1) + |
||||||
|
" " + record.message + "\n") |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} catch (e: SecurityException) { |
||||||
|
e.printStackTrace() |
||||||
|
} catch (e: IOException) { |
||||||
|
e.printStackTrace() |
||||||
|
} |
||||||
|
|
||||||
|
// 添加输出文件handler |
||||||
|
log.addHandler(fileHandler) |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取当前时间 |
||||||
|
* |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@SuppressLint("SimpleDateFormat") |
||||||
|
fun getCurrentDateStr(pattern: String): String { |
||||||
|
val date = Date() |
||||||
|
val sdf = SimpleDateFormat(pattern) |
||||||
|
return sdf.format(date) |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue