精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品二区三区四区| 另类图片亚洲另类| 国产福利一区视频| 成人精品一区二区| 极品尤物av久久免费看| 美女精品久久久| 美女黄色一级视频| 欧美大片免费| 亚洲免费色视频| 久久久久天天天天| 91精品国产乱码久久久久| 欧美日韩1080p| 国产视频久久久久久久| 色婷婷.com| 国产高清中文字幕在线| 国产精品无码永久免费888| 国产不卡一区二区三区在线观看| 黄瓜视频在线免费观看| 99成人在线视频| 亚洲精品久久久久久下一站| 国产视频1区2区3区| bl视频在线免费观看| 亚洲国产精品成人综合| 国产一区二区免费电影| 一级黄在线观看| 久久精品一区二区国产| 欧美人在线视频| 永久免费毛片在线观看| 欧美五码在线| 7777精品伊人久久久大香线蕉的| 久久成人免费观看| 色呦呦视频在线观看| 国产午夜精品一区二区三区视频 | 久久天堂av综合合色| www.超碰97| 福利欧美精品在线| 日韩欧美一级在线播放| 粉色视频免费看| 九九热线视频只有这里最精品| 亚洲伊人伊色伊影伊综合网 | 国自产拍偷拍福利精品免费一| 日韩在线观看你懂的| 亚洲永久精品ww.7491进入| 97品白浆高清久久久久久| 欧美精品v国产精品v日韩精品| 精品视频无码一区二区三区| 手机在线理论片| 亚洲1区2区3区视频| 91网站在线观看免费| 黄色国产网站在线播放| 日韩一区欧美一区| 亚洲精品自在在线观看| 成黄免费在线| 亚洲国产岛国毛片在线| 四虎一区二区| 亚洲搞黄视频| 国产精品二三区| 亚洲一区二区三区在线观看视频| av中文字幕在线| 日本一区二区三区视频视频| 日韩av电影免费在线观看| 久草在线网址| 欧美激情自拍偷拍| 亚洲一卡二卡三卡| 黄色网在线免费看| 一区二区三区中文字幕精品精品| 777久久精品一区二区三区无码| av在线免费网站| 亚洲免费高清视频在线| 国产亚洲精品久久久久久久| 欧美日韩经典丝袜| 懂色av中文一区二区三区天美 | 精品午夜久久福利影院 | a毛片在线免费观看| 国产一区二区不卡| 国产精品国产三级欧美二区| 五月婷婷激情在线| 国产亚洲精品久| 日本福利视频导航| 欧美草逼视频| 日韩欧美999| 艹b视频在线观看| 免费看日产一区二区三区 | 92裸体在线视频网站| 国产日韩精品suv| 不卡一卡二卡三乱码免费网站| 国产伦理一区二区三区| 毛片网站在线观看| 最新日韩在线视频| 日本一区午夜艳熟免费| 美女福利一区二区 | 婷婷色在线视频| 久久精品在这里| 国产精品亚洲天堂| 黄色漫画在线免费看| 欧美三级日韩三级| 挪威xxxx性hd极品| 色乱码一区二区三区网站| 久久夜色精品国产| av黄色在线播放| 精品在线观看视频| 久久九九视频| 欧美黄色激情| 日韩欧美在线观看视频| 国产美女视频免费看| 亚瑟一区二区三区四区| 久久人人爽亚洲精品天堂| 日本黄色片视频| 蜜桃精品在线观看| 精品亚洲欧美日韩| av在线麻豆| 欧美中文字幕一区| 波多野结衣加勒比| 亚洲电影影音先锋| 国产精品美女久久久免费| 亚洲免费国产视频| 亚洲色图欧美偷拍| 国产一级不卡毛片| 精品国产导航| 欧美精品一区在线播放| 中文字幕在线天堂| 成人av网站大全| 潘金莲一级淫片aaaaa免费看| 韩日精品一区二区| 亚洲国产日韩欧美在线图片| 婷婷激情四射网| 免费观看久久久4p| 日本在线高清视频一区| 九九精品调教| 日韩免费看网站| 最新av电影网站| 青青草视频一区| 青青草原亚洲| 黄色成人免费网| 亚洲精品天天看| 亚洲精品午夜久久久久久久| 狠狠色狠狠色综合日日91app| 日韩精品久久久| 2022成人影院| 亚洲另类xxxx| 青草视频在线观看免费| k8久久久一区二区三区| 久久人人爽人人爽人人av| 亚洲国产欧美国产第一区| 播播国产欧美激情| 国产精品国产一区二区三区四区 | 免费看欧美一级片| 精品视频国内| 免费99精品国产自在在线| 国产一区二区三区视频免费观看| 欧美激情一区二区三区全黄| 国产三级三级三级看三级| 国产一区二区三区天码| 国产精品久久久久久久午夜 | 久久九九全国免费精品观看| 在线观看免费黄色小视频| 欧美激情综合在线| 久久久精品高清| 91精品秘密在线观看| 91久热免费在线视频| 最爽无遮挡行房视频在线| 欧美一区二区三区婷婷月色| 久久久久久国产精品免费播放| 国产精品一区二区在线看| 日本a在线天堂| 精品按摩偷拍| 国产成人精品999| 午夜在线小视频| 88在线观看91蜜桃国自产| 青青草原免费观看| 成人精品gif动图一区| 北条麻妃69av| 成人情趣视频网站| 亚洲自拍偷拍福利| 狠狠躁少妇一区二区三区| 国产亚洲欧美一区| 国产按摩一区二区三区| 亚洲v中文字幕| 性欧美一区二区| 国产综合一区二区| 成品人视频ww入口| 激情五月综合网| 亚洲一区二区三区在线免费观看| 久草在线视频福利| 国产亚洲精品综合一区91| 一区二区三区黄| 亚洲午夜免费电影| 一区二区三区伦理片| 国产在线精品一区二区夜色| 国产男女免费视频| 日韩精品欧美激情一区二区| 成人午夜小视频| 亚洲欧洲日本韩国| 久色乳综合思思在线视频| 日韩一级片免费看| 欧美性猛交xxxxxxxx| 麻豆视频在线观看| 久久久高清一区二区三区| 中文字幕在线观看视频www| 久久精品人人| 国产成人艳妇aa视频在线| 国产精品片aa在线观看| 7777精品久久久大香线蕉小说| 成人欧美magnet| 久久久久久久久久国产精品| 香蕉视频网站在线观看| 日韩经典中文字幕| 国产熟女一区二区三区五月婷| 欧美日韩加勒比精品一区| 乱h高h女3p含苞待放| 久久久不卡影院| 秘密基地免费观看完整版中文| 乱一区二区av| 激情六月丁香婷婷| 在线精品一区| 法国空姐在线观看免费| 成人3d动漫在线观看| 精品一区二区三区日本| 精品国产乱码一区二区三区| 国产精品国产自产拍高清av水多 | 亚洲自拍偷拍色片视频| 78精品国产综合久久香蕉| 97视频com| 色老头在线观看| 欧美成人精品在线| 免费高清在线观看| 中文字幕少妇一区二区三区| 三级国产在线观看| 亚洲精品av在线播放| 黄色一级大片在线免费看国产| 欧美久久免费观看| 国产精品午夜一区二区| 日韩欧美亚洲成人| 好看的av在线| 欧美日韩亚洲国产一区| 精品无码免费视频| 亚洲一区免费观看| 欧美精品videos极品| 亚洲欧美色图小说| 日韩在线视频免费看| 国产精品电影院| 亚洲国产123| ●精品国产综合乱码久久久久| 美国黑人一级大黄| 中文字幕巨乱亚洲| 美国精品一区二区| 国产精品久久久99| √天堂中文官网8在线| 亚洲人亚洲人成电影网站色| 日韩精品123区| 亚洲免费三区一区二区| 青娱乐国产在线| 亚洲一级二级在线| 国产精品999在线观看| 欧美日韩国产一区中文午夜| 日韩精品在线观看免费| 色一情一伦一子一伦一区| 手机av免费观看| 欧美男生操女生| www.97超碰| 亚洲精品福利免费在线观看| 人人九九精品| 中文字幕精品www乱入免费视频| 在线观看免费网站黄| 精品国产一区二区三区久久久| av在线免费网址| 久久免费视频这里只有精品| 九色porny自拍视频在线观看| 欧美在线视频观看免费网站| 韩国精品主播一区二区在线观看 | 第一区免费在线观看| 国产精品一区久久久久| 日本黄色录像片| 久久精品男人天堂av| 特黄一区二区三区| 一区二区视频在线| 青青草免费观看视频| 欧美日韩一区在线观看| 国产av无码专区亚洲a∨毛片| 亚洲高清不卡av| 国产在线观看网站| 欧美成人午夜激情在线| 欧美日韩国产观看视频| 国产精品视频大全| 2021年精品国产福利在线| 久久99久久99精品蜜柚传媒| 日韩av在线中文字幕| www国产无套内射com| 久久深夜福利| 杨幂一区二区国产精品| 久久久久久亚洲综合影院红桃 | 国产吃瓜黑料一区二区| 久久影院午夜片一区| 黄色一级片一级片| 精品久久久久久久久中文字幕| 怡春院在线视频| 亚洲第一视频网站| 免费在线毛片网站| 欧美一级电影久久| 日本亚州欧洲精品不卡| 日韩精品一区二区三区外面 | 亚洲欧洲日韩在线| 免费日韩一级片| 欧美一区二区视频在线观看| 黄色av网址在线免费观看| 欧美福利在线观看| 国产成+人+综合+亚洲欧美| 国产精品国产一区二区| 91欧美国产| 免费看a级黄色片| 成人18视频日本| 97在线观看视频免费| 色综合色综合色综合 | 97久久精品一区二区三区的观看方式| 久久99国产精品| 欧美成人亚洲| 成人黄色一级大片| 国产欧美综合色| 97人人澡人人爽人人模亚洲 | 国产精品日韩欧美大师| 欧美一区 二区| 国产精品视频一二三四区| 久久av老司机精品网站导航| 全黄一级裸体片| 欧美日韩国产色视频| www.五月天激情| 蜜臀久久99精品久久久久久宅男| 国产精品蜜月aⅴ在线| 欧美一区二区三区精美影视| 一本色道久久| 2一3sex性hd| 亚洲亚洲精品在线观看| 国产女人18毛片18精品| 色悠悠久久88| 成人在线中文| 亚洲一区二区三区色| 美女视频一区二区| 国产精品69久久久久孕妇欧美| 色悠悠亚洲一区二区| 日本福利在线观看| 欧美一区第一页| 亚洲精华一区二区三区| 欧美变态另类刺激| 久久综合狠狠综合久久激情| 国产九色在线播放九色| 亚洲精品视频网上网址在线观看| 在线免费三级电影网站| 免费观看成人在线| 丝袜美腿成人在线| 人人妻人人澡人人爽| 欧美视频第二页| 国产调教视频在线观看| 成人免费视频在线观看超级碰| 99久久夜色精品国产亚洲1000部| 玖玖爱视频在线| 一区二区三区四区视频精品免费| 99久久精品国产成人一区二区 | 丁香啪啪综合成人亚洲小说 | 美女久久一区| 国产成人免费观看网站| 欧美日韩成人高清| 中文av资源在线| 国内外成人免费视频| 亚洲一区二区伦理| 先锋影音av在线| 制服丝袜av成人在线看| 亚洲七七久久综合桃花剧情介绍| 国产成人精品一区二区三区福利 | 国产无色aaa| 亚洲一本大道在线| 久草福利在线| 91老司机在线| 99视频一区| 久久视频一区二区三区| 欧美一区二区三区视频在线 | 国产精品美女免费看| 国产精品88久久久久久| 东京热av一区| 91黄视频在线| 91精品久久久| 久久亚裔精品欧美| 久久精品国产亚洲一区二区三区| 青青草成人免费| 亚洲欧美日韩网| 精品一区二区三区四区五区| aa在线观看视频| 中文字幕一区二区在线观看| 亚洲欧美激情国产综合久久久| 欧美一级视频在线观看| 88国产精品视频一区二区三区| 亚洲精品国产成人av在线| 欧美三区在线观看| 91av久久| 一区二区三区av在线| 成人三级伦理片| 91丨porny丨在线中文 | 中文字幕一区av| 香蕉av一区二区三区| 成人a免费视频| 久久精品导航|