精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android|集成 slf4j + logback 作為日志框架

移動開發 Android
將從零開始,記錄如何在 Android APP 中集成 slf4j + logback 作為日志框架,并使用 Lombok 注解生成日志對象。

最近在做一個 Android APP 的日志改造時,想要滿足如下需求:

  • 能夠很方便地使用可變參數的方式輸出日志;
  • 日志能夠根據級別輸出到控制臺和文件;
  • 能夠按照日期和文件大小進行日志文件的切割,滾動保存指定天數的日志,自動清理舊日志。

基于這個需求,我搜了一下「Android 日志框架」,大多網友推薦的是 logger、timber、xLog 等等,看著也不錯。不過出于幾年后端開發的經驗和習慣,我進一步了解,發現熟悉的 log4j 和 logback 在 Android 上也有人做過適配,所以最終決定使用 slf4j + logback,以在前后端開發中取得一致的體驗。

做過 Java 后端開發的同學,對于 slf4j + logback 的組合一般不陌生,而 Android 開發的同學則可能不一定聽過它們。所以,本文將從零開始,記錄如何在 Android APP 中集成 slf4j + logback 作為日志框架,并使用 Lombok 注解生成日志對象。

集成 slf4j + logback

logback-android 項目地址:https://github.com/tony19/logback-android

1.在項目/模塊的 build.gradle 文件中添加依賴:

dependencies {
  implementation 'org.slf4j:slf4j-api:2.0.7'
  implementation 'com.github.tony19:logback-android:3.0.0'
}

如果是單模塊項目,可以直接在 app/build.gradle 文件中添加,如果是多模塊項目,可以在一個公共模塊的 build.gradle 文件中添加,記得將 slf4j-api 的 implementation 改為 api 才可被其它模塊引用。

2.創建日志配置文件 app/src/main/assets/logback.xml:

<configuration debug="false"
    xmlns="https://tony19.github.io/logback-android/xml"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://tony19.github.io/logback-android/xml https://cdn.jsdelivr.net/gh/tony19/logback-android/logback.xsd"
>

    <property name="LOG_DIR" value="${EXT_DIR:-${DATA_DIR}}/test/log"/>
    
    <appender name="logcat" class="ch.qos.logback.classic.android.LogcatAppender">
        <tagEncoder>
            <pattern>%logger{12}</pattern>
        </tagEncoder>
        <encoder>
            <pattern>[%-20thread] %msg</pattern>
        </encoder>
    </appender>

    <appender name="local_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_DIR}/test.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_DIR}/test.%d.log</fileNamePattern>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="logcat" />
    </root>

    <root level="INFO">
        <appender-ref ref="local_file" />
    </root>
</configuration>

以上配置表示 DEBUG 及以上級別的日志輸出到控制臺,INFO 及以上級別的日志輸出到文件,文件按照日期切割,最多保留 15 天的日志。

大家可以按需配置,比如還可以限定單個文件大小、自定義日志輸出的格式等等。

在項目的 Wiki 里提到有一點是 Android 開發者比較關注的,就是日志有保存路徑,既可以指定絕對路徑,也可以用變量,比如:

  • ${DATA_DIR} 表示 Context.getFilesDir();
  • ${EXT_DIR} 表示 Context.getExternalFilesDir(null);
  • ${EXT_DIR:-${DATA_DIR}} 表示當 EXT_DIR 可用時使用 EXT_DIR,否則使用 DATA_DIR;
  • ${PACKAGE_NAME} 表示包名;
  • ${VERSION_NAME} 表示版本名;
  • ${VERSION_CODE} 表示版本號。

3.可以開始使用 slf4j 的 API 進行日志打印了:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

// 聲明 logger
Logger log = LoggerFactory.getLogger(MainActivity.class);

// 打印日志
log.info("hello world");
log.info("number {}, boolean {}, string {}, object {}", 1, true, "string", new Object());

運行 APP,可以看到日志輸出到 logcat 和對應位置的文件。

當對配置有疑問,需要調試時,可以將上面配置文件里的 debug="false" 改為 debug="true",這樣 logback 就會輸出詳細的信息,方便我們定位問題。

使用 Lombok 注解生成日志對象

在上一部分的第 3 步,在每一個需要使用 logger 的類里,都需要手動去聲明 logger,如 Logger log = LoggerFactory.getLogger(MainActivity.class);,不算方便。

這里我們可以使用 Lombok 注解來簡化這一步驟,自動生成 logger 對象。

Lombok 官方提供了 Android 平臺的集成說明:https://projectlombok.org/setup/android。

基于 Android Studio 環境,要做的其實就兩步。

1.安裝 Lombok 插件:

Settings -> Plugins -> 搜索 Lombok -> 安裝

注:Android Studio 版本 2020.3.1 - 2022.3.1,JetBrains 官方插件市場無法搜索到兼容版本的 Lombok 插件,可以參考 https://gitee.com/sgpublic/lombok-plugin-repository 解決。

2.在需要使用的模塊的 build.gradle 文件里添加如下內容:

dependencies {
	compileOnly 'org.projectlombok:lombok:1.18.30'
	annotationProcessor 'org.projectlombok:lombok:1.18.30'
}

然后,就可以使用 @Slf4j 注解來自動生成 logger 對象了,現在的使用姿勢簡化成了這樣:

@Slf4j
public class Test {
    public void test() {
        log.info("hello world");
    }
}

小結

好了以上就是在 Android 里集成 slf4j + logback 的記錄了,至此我「統一」了 Java 后端和 Android 客戶端打印日志的用法,在避免多項目維護造成「精神分裂」的路上前進了一小步。

本文所列代碼示例已上傳至 GitHub,地址:https://github.com/mzlogin/AndroidPractices/tree/master/android-studio/LogbackDemo

責任編輯:趙寧寧 來源: 悶騷的程序員
相關推薦

2013-02-20 09:42:34

JavaLogbackSLF4J

2020-01-07 10:06:26

Slf4jLog4JLogback

2024-03-01 16:52:02

SLF4J日志框架

2023-01-11 21:22:32

Java服務器

2025-10-10 04:10:00

2023-05-06 07:51:22

JavaFacade設計模式

2021-03-15 18:47:25

日志開發源碼

2016-10-21 13:10:18

javalog4jslf4j

2024-03-01 08:17:28

SLF4J日志框架

2022-12-30 08:31:27

MDC查詢日志

2020-10-27 08:24:45

阿里巴巴SLF4J

2020-11-04 12:33:08

Log4j 2日志Logback

2023-10-07 10:08:54

2022-05-12 11:38:26

Java日志Slf4j

2021-08-02 15:40:20

Java日志工具

2025-05-26 08:50:00

SLF4JMDC全鏈路追蹤

2025-01-20 08:10:00

微服務架構SLF4J

2024-01-03 07:19:19

LogbackLog4j2Java

2018-08-28 15:30:54

編程語言Python日志系統

2025-01-14 01:00:00

日志接口Log4j
點贊
收藏

51CTO技術棧公眾號

国产国产精品人在线视| 欧美电影一区二区三区| 欧美日韩精品免费观看| 久久久久亚洲视频| 亚洲女同另类| 亚洲精品国产suv| 日韩无套无码精品| 国产激情视频在线| 成人v精品蜜桃久久一区| 国产精品wwwwww| 久久av高潮av无码av喷吹| 国产99久久| 欧美成人精品1314www| 国产精品少妇在线视频| av片在线观看免费| 久久这里都是精品| 成人a级免费视频| 日本午夜视频在线观看| 久久久久久美女精品| 日韩精品中文字幕在线| 国产精品久久久久久久99| 中文字幕一区久| 亚洲最大色网站| 亚洲欧洲精品一区| 三级毛片在线免费看| 国产激情一区二区三区| 国产玖玖精品视频| 精品国产免费观看| 欧美日韩岛国| 久久久国产精品一区| 久久久久久久久久久久| 成人在线tv视频| 91麻豆精品国产| 男操女免费网站| 亚洲天堂免费电影| 亚洲高清免费观看| 免费看日本黄色| а√资源新版在线天堂| 国产精品午夜免费| 日本不卡二区| 欧美日韩国产中文字幕在线| 成人激情校园春色| 99视频在线| 国产福利小视频| 激情综合网激情| 国产精品久久视频| 一级黄色av片| 老司机亚洲精品| 日本最新高清不卡中文字幕| 日韩少妇高潮抽搐| 亚洲日本欧美| 亚洲 日韩 国产第一| 久久久久久久国产精品毛片| 午夜亚洲福利| 欧美激情视频在线观看| 欧美三级 欧美一级| 综合激情视频| 欧美另类第一页| 国产亚洲自拍av| 亚洲精品极品| 欧美性视频精品| 国语对白永久免费| 视频精品一区二区| 国产精品久久久久久久电影| 在线免费观看一区二区| 毛片不卡一区二区| 91在线观看免费高清| av中文字幕免费| 波多野结衣中文字幕一区| 精品视频一区二区三区四区| 爽爽视频在线观看| 欧美国产综合一区二区| 亚洲人成77777| 成人无遮挡免费网站视频在线观看| 亚洲欧美日韩一区| 久艹视频在线免费观看| 欧美艳星kaydenkross| 欧美在线一区二区三区| 在线视频日韩欧美| 一区二区在线免费播放| 亚洲精品国产福利| 国产精品情侣呻吟对白视频| 婷婷综合亚洲| 国内免费久久久久久久久久久| 国产www在线| 久久er99热精品一区二区| 99精品国产高清一区二区| 外国精品视频在线观看 | 欧美日韩美女在线| 国产福利一区视频| 国产欧美88| 日韩毛片在线看| 九九精品视频免费| 99国内精品| 国产精品一区二区电影| 成人午夜精品福利免费| 久久精品一区二区三区不卡牛牛| 亚洲午夜精品久久久久久浪潮| 欧美人体视频xxxxx| 欧美在线观看18| 麻豆av免费看| 成人精品电影| 久久久久久久久久久国产| 夜夜躁日日躁狠狠久久av| 国产精品资源网| 色综合影院在线观看| 青春草免费在线视频| 欧美午夜理伦三级在线观看| 秘密基地免费观看完整版中文 | 福利一区福利二区| 视频在线99re| 国产色播av在线| 91精品国产综合久久香蕉的特点 | 人妖精品videosex性欧美| www.激情五月.com| 国产精品久久午夜| 男人舔女人下面高潮视频| 136福利精品导航| 久久视频免费在线播放| 高清乱码免费看污| 不卡高清视频专区| 天堂а√在线中文在线| 欧美一级免费| 在线中文字幕日韩| 久久久免费高清视频| 成人精品gif动图一区| 佐佐木明希av| 图片一区二区| 中文字幕国产亚洲2019| 国产精品久久久久久人| 99久久精品免费精品国产| 中国一级大黄大黄大色毛片| 四虎精品在线观看| 最新国产精品拍自在线播放| 波多野结衣一区二区三区在线 | 蜜桃视频在线观看一区二区| 欧美激情第六页| 蜜桃视频m3u8在线观看| 亚洲国产精彩中文乱码av| 久久久久久久九九九九| 国产剧情一区在线| 男人的天堂成人| 99精品美女视频在线观看热舞| 国产一区二区三区视频在线观看 | 啊啊啊久久久| 精品国产sm最大网站免费看| 免费视频一二三区| 国产不卡在线视频| 免费网站在线观看视频 | 久久99国内精品| 91香蕉视频网址| 精品国产伦一区二区三区观看说明| 色七七影院综合| 一本色道久久综合无码人妻| 国产精品久久777777| 想看黄色一级片| 亚洲国产精品久久久天堂| 亚洲在线视频福利| 午夜dj在线观看高清视频完整版| 日韩女优视频免费观看| 久久午夜无码鲁丝片午夜精品| 粉嫩一区二区三区性色av| 青青在线免费观看| 色橹橹欧美在线观看视频高清| 欧美亚洲另类在线| 国产精品免费观看| 欧美日韩久久一区| 外国一级黄色片| 99精品国产一区二区三区不卡| 91国视频在线| 成人羞羞视频在线看网址| 成人激情视频小说免费下载| 婷婷丁香在线| 日韩精品在线私人| 一级黄色免费看| 一区二区三区四区乱视频| 日b视频在线观看| 青青草原综合久久大伊人精品优势| 在线视频91| 久久精品亚洲成在人线av网址| 琪琪亚洲精品午夜在线| 伊人免费在线| 亚洲福利视频免费观看| 日本精品入口免费视频| 亚洲青青青在线视频| 波多野结衣有码| aa视频在线播放| 91嫩草亚洲精品| 国内不卡一区二区三区| 成人免费一区| 午夜精品福利电影| 91在线看片| 精品乱人伦小说| 波多野结衣视频网址| 亚洲一区二区在线播放相泽 | 熟妇人妻av无码一区二区三区| 在线免费亚洲电影| 欧美日韩精品亚洲精品| 久久久精品人体av艺术| 国产精久久久久| 麻豆91在线播放免费| 欧美日韩成人免费视频| 国产精品久久久久无码av| 久久av免费观看| 精品视频一二| 国产精品久久久久高潮| 第一中文字幕在线| 日韩中文字幕在线| 男同在线观看| 亚洲国产成人爱av在线播放| 国产欧美一区二区三区视频在线观看| 精品电影在线观看| 黄色一级片在线免费观看| 国产欧美精品区一区二区三区 | 欧美国产禁国产网站cc| 最新在线黄色网址| 国产成人亚洲综合色影视| 免费看国产黄色片| 亚洲影院一区| 黄色国产一级视频| 欧美激情aⅴ一区二区三区| 日韩电影大全在线观看| 美日韩黄色大片| 99影视tv| 欧美一区在线观看视频| 国产精品自产拍在线观| 久久人体大尺度| 97精品视频在线观看| 在线观看中文| 久久成人人人人精品欧| 天堂аⅴ在线地址8| 国产视频一区在线| 天堂在线视频观看| 亚洲精品一线二线三线无人区| 国产suv一区二区| 欧美疯狂做受xxxx富婆| 亚洲熟女乱色一区二区三区久久久| 日韩欧美福利视频| 五月天激情国产综合婷婷婷| 舔着乳尖日韩一区| 国产午夜视频在线| 亚洲精品乱码久久久久久| 麻豆明星ai换脸视频| 自拍偷拍国产精品| 国产黄色的视频| 尤物视频一区二区| 黄网站免费在线| 亚洲成人久久影院| 日韩久久久久久久久| 午夜精品福利一区二区蜜股av| 日本一二三区不卡| 欧美色视频日本版| 黄色在线免费观看| 色综合激情五月| 这里只有精品999| 欧美精品日韩精品| 国产乱码精品一区二区| 日韩欧美三级在线| 人妻丰满熟妇av无码区hd| 亚洲精品99久久久久| 日本人妖在线| 日韩在线观看免费全集电视剧网站| 欧美性videos| 欧美韩国理论所午夜片917电影| 91禁在线看| 国产成人亚洲精品| 看片一区二区| 99国产在线视频| 九一精品国产| 亚洲亚洲精品三区日韩精品在线视频| 99精品美女| 给我免费播放片在线观看| 欧美一级一区| 红桃视频 国产| 成人在线一区二区三区| 一级黄色片大全| 综合在线观看色| 日韩欧美a级片| 欧美在线观看你懂的| www.色亚洲| 亚洲视频777| 2024短剧网剧在线观看| 78色国产精品| 狠狠久久综合| 91香蕉视频在线下载| 日韩欧美四区| 中文精品视频一区二区在线观看| 欧美三区在线| 亚洲一区在线不卡| 成人黄页毛片网站| 国产免费嫩草影院| 调教+趴+乳夹+国产+精品| 91tv国产成人福利| 日韩精品亚洲视频| 国产黄色在线网站| 人九九综合九九宗合| 亚洲一区二区三区四区电影| 欧美一进一出视频| 国产精品vip| 中文字幕第36页| 91在线国产观看| 国产美女福利视频| 日本久久一区二区三区| 亚洲黄色a级片| 深夜精品寂寞黄网站在线观看| 超碰99在线| 亚洲综合视频1区| 成人黄色小视频| 国产男女无遮挡| 粉嫩一区二区三区性色av| 91香蕉视频网| 日韩欧美在线免费| 你懂的网站在线| 欧美日韩成人在线播放| 亚洲精品成a人ⅴ香蕉片| 免费成人av网站| 激情亚洲网站| 永久看看免费大片| 国产精品久久久久久福利一牛影视| 超碰中文字幕在线| 精品久久一二三区| 18av在线视频| 成人免费福利视频| 日韩免费久久| 中文字幕第80页| 久久女同性恋中文字幕| 成年人午夜视频| 亚洲成人av资源网| 另类视频在线| 99国产超薄丝袜足j在线观看| 亚洲草久电影| 国产精欧美一区二区三区白种人| 国产精品进线69影院| 中文字幕永久在线观看| 永久免费精品影视网站| 久久野战av| 日韩高清国产精品| 日韩avvvv在线播放| 无码少妇一区二区| 欧洲精品视频在线观看| 电影av在线| 国产免费一区二区三区在线观看 | 在线日韩第一页| 日韩欧美2区| 亚洲一区二区三区乱码| 蓝色福利精品导航| 神马久久精品综合| 91精品国产综合久久精品| av免费在线观看网址| 亚洲综合精品一区二区| 国产精品av久久久久久麻豆网| gogo亚洲国模私拍人体| 亚洲一区二区视频| 无码国产精品高潮久久99| 欧美中文在线观看国产| av永久不卡| 手机av在线网站| 亚洲在线观看免费视频| 天天干天天色天天| 国产精品白丝jk喷水视频一区| 欧洲视频一区| 亚洲欧美日韩一二三区| 亚洲自拍偷拍图区| 日韩午夜影院| 国产精品久久久久久久久久尿| 日韩精品欧美激情一区二区| 免费黄频在线观看| 亚洲成人午夜电影| 黄视频在线观看免费| 成人免费视频在线观看超级碰| 亚洲欧美亚洲| 在线观看国产三级| 欧美三级视频在线观看| 97caopron在线视频| 精品伦精品一区二区三区视频| 久久综合伊人| 懂色av懂色av粉嫩av| 亚洲精品永久免费精品| 四虎成人精品一区二区免费网站| 青青在线免费观看| 中文字幕不卡在线观看| 性一交一乱一乱一视频| 国产成人精品亚洲精品| 中文字幕免费一区二区| 中出视频在线观看| 欧美精品黑人性xxxx| av日韩中文| 一区二区三区国产福利| 成人av电影免费在线播放| 日本欧美www| 久久久中精品2020中文| 日本激情一区| 99re这里只有| 制服视频三区第一页精品| 性欧美freesex顶级少妇| 色中文字幕在线观看| 91丨国产丨九色丨pron| 国产日韩在线观看一区| 日本视频久久久| 国内精品嫩模av私拍在线观看|