{"id":20609639,"url":"https://github.com/blankj/alog","last_synced_at":"2025-04-06T20:12:44.282Z","repository":{"id":61967205,"uuid":"87403566","full_name":"Blankj/ALog","owner":"Blankj","description":":pencil: A simple util of log in Android develop.","archived":false,"fork":false,"pushed_at":"2019-01-02T11:05:04.000Z","size":4204,"stargazers_count":452,"open_issues_count":1,"forks_count":72,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-03-30T18:11:15.490Z","etag":null,"topics":["android-log","android-logger","kotlin-logger","logger"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Blankj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-04-06T08:09:49.000Z","updated_at":"2025-03-25T18:41:06.000Z","dependencies_parsed_at":"2022-10-24T11:00:29.860Z","dependency_job_id":null,"html_url":"https://github.com/Blankj/ALog","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Blankj%2FALog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Blankj%2FALog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Blankj%2FALog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Blankj%2FALog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Blankj","download_url":"https://codeload.github.com/Blankj/ALog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247543593,"owners_count":20955865,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-log","android-logger","kotlin-logger","logger"],"created_at":"2024-11-16T10:14:06.740Z","updated_at":"2025-04-06T20:12:44.263Z","avatar_url":"https://github.com/Blankj.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ALog（该库已停止维护，后续更新都在 [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode) 的 [LogUtils](https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java)）\n\n[![ALog][alogsvg]][alog] [![api][apisvg]][api] [![build][buildsvg]][build] [![License][licensesvg]][license]\n\n## Functions\n\n* 兼容 Android Studio 3.1.0 的 Logcat 完美显示日志\n* 兼容 Kotlin\n* 可设置 Log 开启和关闭\n* 可设置是否输出到控制台（Logcat）\n* 可设置 Log 全局 Tag\n* 全局 Tag 为空时 Tag 为当前类名\n* 可设置 Log 是否显示头部信息\n* Log 文件顶部显示设备信息\n* Log 头部含有当前线程名\n* Log 头部含有当前类及行号和函数名，支持点击跳转\n* 可设置 Log 是否写入文件\n* 可设置 Log 写入文件目录\n* 可设置 Log 写入文件前缀\n* 可设置 Log 是否显示边框\n* 可设置 Log 控制台过滤器\n* 可设置 Log 文件过滤器\n* 可设置 Log 栈深度\n* 可设置 Log 栈偏移\n* 可设置 Log 保存天数\n* 可增加 Log 格式化器，默认已支持 Array, Throwable, Bundle, Intent 格式化输出\n* 支持控制台长字符串的输出\n* 支持多参数输出\n* 支持单独写入文件\n* 支持 JSON 串的输出\n* 支持 XML 串的输出\n* 支持 Live Templates\n* jar 包不足 5Kb\n\n\n## API -\u003e [ALog.java][alog.java] -\u003e [Demo][alog.demo]\n\n```\ninit                     : 初始化\ngetConfig                : 获取 log 配置\nConfig.setLogSwitch      : 设置 log 总开关\nConfig.setConsoleSwitch  : 设置 log 控制台开关\nConfig.setGlobalTag      : 设置 log 全局 tag\nConfig.setLogHeadSwitch  : 设置 log 头部信息开关\nConfig.setLog2FileSwitch : 设置 log 文件开关\nConfig.setDir            : 设置 log 文件存储目录\nConfig.setFilePrefix     : 设置 log 文件前缀\nConfig.setBorderSwitch   : 设置 log 边框开关\nConfig.setSingleTagSwitch: 设置 log 单一 tag 开关（为美化 AS 3.1 的 Logcat）\nConfig.setConsoleFilter  : 设置 log 控制台过滤器\nConfig.setFileFilter     : 设置 log 文件过滤器\nConfig.setStackDeep      : 设置 log 栈深度\nConfig.setStackOffset    : 设置 log 栈偏移\nConfig.setSaveDays       : 设置 log 可保留天数\nConfig.addFormatter      : 新增 log 格式化器\nlog                      : 自定义 tag 的 type 日志\nv                        : tag 为类名的 Verbose日志\nvTag                     : 自定义 tag 的 Verbose日志\nd                        : tag 为类名的 Debug 日志\ndTag                     : 自定义 tag 的 Debug 日志\ni                        : tag 为类名的 Info 日志\niTag                     : 自定义 tag 的 Info 日志\nw                        : tag 为类名的 Warn 日志\nwTag                     : 自定义 tag 的 Warn 日志\ne                        : tag 为类名的 Error日志\neTag                     : 自定义 tag 的 Error日志\na                        : tag 为类名的 Assert 日志\naTag                     : 自定义 tag 的 Assert 日志\nfile                     : log 到文件\njson                     : log 字符串之 json\nxml                      : log 字符串之 xml\n```\n\n\n## How to use\n\n`compile 'com.blankj:alog:1.9.1'` or [![Download][jarsvg]][jar]\n\n\n## Usage\n\n### 初始化\n\n在 Application 的 `onCreate` 函数中初始化，如下\n\n``` java\n// init it in ur application\npublic void initALog() {\n    ALog.Config config = ALog.init(this)\n            .setLogSwitch(BuildConfig.DEBUG)// 设置 log 总开关，包括输出到控制台和文件，默认开\n            .setConsoleSwitch(BuildConfig.DEBUG)// 设置是否输出到控制台开关，默认开\n            .setGlobalTag(null)// 设置 log 全局标签，默认为空\n            // 当全局标签不为空时，我们输出的 log 全部为该 tag，\n            // 为空时，如果传入的 tag 为空那就显示类名，否则显示 tag\n            .setLogHeadSwitch(true)// 设置 log 头信息开关，默认为开\n            .setLog2FileSwitch(false)// 打印 log 时是否存到文件的开关，默认关\n            .setDir(\"\")// 当自定义路径为空时，写入应用的 /cache/log/ 目录中\n            .setFilePrefix(\"\")// 当文件前缀为空时，默认为 \"alog\"，即写入文件为 \"alog-MM-dd.txt\"\n            .setBorderSwitch(true)// 输出日志是否带边框开关，默认开\n            .setSingleTagSwitch(true)// 一条日志仅输出一条，默认开，为美化 AS 3.1 的 Logcat\n            .setConsoleFilter(ALog.V)// log 的控制台过滤器，和 logcat 过滤器同理，默认 Verbose\n            .setFileFilter(ALog.V)// log 文件过滤器，和 logcat 过滤器同理，默认 Verbose\n            .setStackDeep(1)// log 栈深度，默认为 1\n            .setStackOffset(0)// 设置栈偏移，比如二次封装的话就需要设置，默认为 0\n            .setSaveDays(3)// 设置日志可保留天数，默认为 -1 表示无限时长\n            // 新增 ArrayList 格式化器，默认已支持 Array, Throwable, Bundle, Intent 的格式化输出\n            .addFormatter(new ALog.IFormatter\u003cArrayList\u003e() {\n                @Override\n                public String format(ArrayList list) {\n                    return \"ALog Formatter ArrayList { \" + list.toString() + \" }\";\n                }\n            });\n    ALog.d(config.toString());\n}\n```\n\n借助我帮大家写好的 `Live Templates` 大家可以更方便地使用 `ALog`，演示动画如下所示。\n\n![templates][templates]\n\n大家可以下载这个 [Live Templates][templates_jar] 包，然后在 AS 中 `File -\u003e Import Settings` 即可。\n\n关于如何写 `Live Templates`，其实大家可以借鉴安卓自带的 `Live Templates`，然后效仿一下即可。\n\n\n### 默认初始化下的图例\n\n* `ALog.d(\"debug\");`\n\n![detail][detail]\n\n* `ALog.d(\"customTag\", \"debug0\", \"debug1\");`\n\n![args][args]\n\n* `ALog.d(longStr);`\n\n![long][long]\n\n* `ALog.file(longStr);`\n\n![file][file]\n\n![filecontent][filecontent]\n\n* `ALog.json(json);`\n\n![json][json]\n\n* `ALog.xml(xml);`\n\n![xml][xml]\n\n\n更多使用请运行 demo 来查看。\n\n\n\n## Contact\n\n[![jianshu][jianshusvg]][jianshu] [![weibo][weibosvg]][weibo]  [![Blog][blogsvg]][blog] [![QQ0Group][qq0groupsvg]][qq0group] [![QQ1Group][qq1groupsvg]][qq1group]\n\n\n[alogsvg]: https://img.shields.io/badge/ALog-v1.9.1-brightgreen.svg\n[alog]: https://github.com/Blankj/ALog\n\n[apisvg]: https://img.shields.io/badge/API-14+-brightgreen.svg\n[api]: https://android-arsenal.com/api?level=14\n\n[buildsvg]: https://travis-ci.org/Blankj/ALog.svg?branch=master\n[build]: https://travis-ci.org/Blankj/ALog\n\n[licensesvg]: https://img.shields.io/badge/License-Apache--2.0-brightgreen.svg\n[license]: https://github.com/Blankj/ALog/blob/master/LICENSE\n\n[alog.java]: https://github.com/Blankj/ALog/blob/master/alog/src/main/java/com/blankj/ALog.java\n[alog.demo]: https://github.com/Blankj/ALog/blob/master/app/src/main/java/com/blankj/alog/ALogActivity.java\n[jarsvg]: https://img.shields.io/badge/download-jar--4Kb-brightgreen.svg\n[jar]: https://jcenter.bintray.com/com/blankj/alog/1.9.1/alog-1.9.1-sources.jar\n[detail]: https://raw.githubusercontent.com/Blankj/ALog/master/art/detail.png\n[args]: https://raw.githubusercontent.com/Blankj/ALog/master/art/args.png\n[long]: https://raw.githubusercontent.com/Blankj/ALog/master/art/long.png\n[file]: https://raw.githubusercontent.com/Blankj/ALog/master/art/file.png\n[filecontent]: https://raw.githubusercontent.com/Blankj/ALog/master/art/filecontent.png\n[json]: https://raw.githubusercontent.com/Blankj/ALog/master/art/json.png\n[xml]: https://raw.githubusercontent.com/Blankj/ALog/master/art/xml.png\n[templates]: https://raw.githubusercontent.com/Blankj/ALog/master/art/alog.gif\n[templates_jar]: https://raw.githubusercontent.com/Blankj/ALog/master/art/alog_templates.jar\n\n[jianshusvg]: https://img.shields.io/badge/简书-Blankj-brightgreen.svg\n[jianshu]: http://www.jianshu.com/u/46702d5c6978\n\n[weibosvg]: https://img.shields.io/badge/weibo-__Blankj-brightgreen.svg\n[weibo]: http://weibo.com/3076228982\n\n[blogsvg]: https://img.shields.io/badge/Blog-Blankj-brightgreen.svg\n[blog]: http://blankj.com\n\n[qq0groupsvg]: https://img.shields.io/badge/QQ0群(满)-74721490-fba7f9.svg\n[qq0group]: https://shang.qq.com/wpa/qunwpa?idkey=62baf2c3ec6b0863155b0c7a10c71bba2608cb0b6532fc18515835e54c69bdd3\n\n[qq1groupsvg]: https://img.shields.io/badge/QQ1群-25206533-fba7f9.svg\n[qq1group]: https://shang.qq.com/wpa/qunwpa?idkey=d906789f84484465e2736f7b524366b4c23afeda38733d5c7b10fc3f6e406e9b","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblankj%2Falog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblankj%2Falog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblankj%2Falog/lists"}