一个主要控制安卓日志存文件的工具
不是说网上的日志库,不能满足需求,只是不那么适合自己,趁有点空闲时间,就参考并吸收其他日志库的思路和精髓,自己封装一个,方便自己使用。
可以把 loglibrary 添加到你的项目里
- 日志存文件、文件保留天数
- 日志文件总大小限制,防止日志不可控,自定义文件大小检查间隔,生产级日志库解决方案:清理工作与核心的日志写入逻辑完全解耦
- 日志打印堆栈信息
- 支持xml、json日志格式输出
- 更多功能,随心开发...
在Application中初始化,如果不初始化,则在第一次打印日志时使用默认值进行初始化
XLogger.init(new LogConfiguration.Builder()
.setTag("xLog") // 日志tag,如果开启堆栈跟踪,此值会被覆盖
.setDebugEnabled(true) // 是否开启日志输出
.setLogLevel(LogLevel.ALL) // 日志输出级别,默认为LogLevel.ALL,低于此级别的日志将不会输出
.setStackTraceEnabled(true) //会在日志中打印出当前调用堆栈,方便定位日志
.setLogDirectory(getApplicationContext().getExternalFilesDir("xloger").getAbsolutePath()) //日志保存目录,外部存储的应用私有目录,不需要权限,默认为/sdcard/Android/data/包名/files/xloger
.setIsSaveLogEnabled(false) //是否开启日志文件保存功能,默认为false
.setRetentionDays(3) // 日志保留天数,默认为7天
.setMaxTotalLogSize(100 * 1024 * 1024) // x指定日志文件总大小,超过此值会自动删除最老的日志文件,默认不限制
.setLogSizeCheckInterval(10 * 60 * 1000) // x检查间隔,默认 5分钟,检查日志文件总大小的时间间隔,不设置 maxTotalLogSize ,此值无效
.build());
//未指定TAG,默认展示 XLoger ,配置全局日志TAG后显示全局TAG,开启堆栈跟踪 显示日志打印文件名及具体行数
XLogger.d("hello world");
XLogger.i("hello world");
XLogger.w("hello world");
XLogger.e("hello world");
//指定TAG,优先级最高
XLogger.d(TAG, "hello world");
XLogger.i(TAG, "hello world");
XLogger.w(TAG, "hello world");
XLogger.e(TAG, "hello world");
XLogger.wtf("严重警告");
XLogger.e("严重警告",new Throwable("我 是 Throwable"));
输出示例
18969-18969 xLog com.xaye.xloger D hello world
18969-18969 xLog com.xaye.xloger I hello world
18969-18969 xLog com.xaye.xloger W hello world
18969-18969 xLog com.xaye.xloger E hello world
19041-19041 (MainActivity.java:15) com.xaye.xloger D hello world
19041-19041 (MainActivity.java:16) com.xaye.xloger I hello world
19041-19041 (MainActivity.java:17) com.xaye.xloger W hello world
19041-19041 (MainActivity.java:18) com.xaye.xloger E hello world
21251-21251 MainActivity com.xaye.xloger I hello world
21251-21251 MainActivity com.xaye.xloger W hello world
21251-21251 MainActivity com.xaye.xloger E hello world
21650-21650 MainActivity.java:40 com.xaye.xloger E 严重警告
21575-21575 MainActivity.java:40 com.xaye.xloger E 严重警告
Exception: java.lang.Throwable
Message: 我 是 Throwable
at com.xaye.xloger.MainActivity.onCreate(MainActivity.java:40)
at android.app.Activity.performCreate(Activity.java:8022)
at android.app.Activity.performCreate(Activity.java:8006)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3404)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3595)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
V2.1
新增功能:
- 自动压缩历史日志文件(除了当天的日志文件)
- 压缩成功后删除原始日志文件,只保留压缩文件
- 使用新的命名格式:2025_07_23_log.zip
- 压缩过程不影响当前日志写入