Android 開發中,由於設備碎片化嚴重,線上問題往往難以復現。將應用日誌持久化到 SD 卡,類似服務端的 Log4j,是定位疑難雜症的關鍵手段。microlog4android 是一款輕量級日誌框架,專為 Android 設計,支持 LogCat 與文件雙輸出。本文從依賴接入、配置詳解、常見坑點到自定義日誌路徑,提供完整落地指南。
官方下載頁:https://code.google.com/p/microlog4android/downloads/list
下載 microlog4android-1.0.0.jar 與 microlog.properties,放入項目 libs/ 目錄並加入構建路徑。
import net.sf.microlog.core.Logger;
import net.sf.microlog.core.LoggerFactory;
public class MainActivity extends Activity {
private static final Logger logger = LoggerFactory.getLogger(MainActivity.class);
// ...
}
import net.sf.microlog.midp.PropertyConfigurator;
@Override
public void onCreate() {
super.onCreate();
// 讀取 assets/microlog.properties 並自動配置
PropertyConfigurator.getConfigurator(this).configure();
}
在 src/main/assets/(與 res/ 同級)創建 microlog.properties:
# 根日誌級別
microlog.level=DEBUG
# 雙輸出:LogCat + 文件
microlog.appender=LogCatAppender;FileAppender
# 格式化樣式
microlog.formatter=PatternFormatter
microlog.formatter.PatternFormatter.pattern=%c [%P] %m %T
logger.debug("網絡請求啟動: url=" + url);
logger.info("用戶登入成功: uid=" + uid);
logger.error("數據庫寫入失敗", e); // 異常堆棧自動輸出
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
默認情況下,日誌文件固定為 SD 卡根目錄下的 microlog.txt。若需自定義,需覆蓋 PropertyConfigurator 的解析邏輯。
官方 1.0.0 版 JAR 中的 PropertyConfigurator 缺少 microlog.appender.FileAppender.File 屬性解析,導致配置無效。
git clone https://github.com/johanlkarlsson/microlog4androidPropertyConfigurator 包含 FileAppender.File 解析邏輯。ant jar 或用 IDE 導出為 microlog4android-1.1.jar。microlog.level=DEBUG
microlog.appender=FileAppender;LogCatAppender
microlog.appender.FileAppender.File=/sdcard/myapp/logs/mylog.txt
microlog.formatter=PatternFormatter
microlog.formatter.PatternFormatter.pattern=%d{%Y-%m-%d %H:%M:%S} %c [%P] %m %T
運行後,日誌將輸出至指定路徑,支持目錄自動創建(需確保權限)。
| 現象 | 原因 | 對策 |
|---|---|---|
| 日誌文件未生成 | 缺少 WRITE_EXTERNAL_STORAGE 權限或 SD 卡不可用 | 檢查清單文件、運行時權限申請(Android 6.0+)、存儲狀態 |
| 配置修改不生效 | 使用舊版 JAR,缺少 File 屬性解析 | 按上文從源碼重新打包替換 |
| 日誌亂碼 | 編碼不一致 | 在 PatternFormatter 中指定 UTF-8,或確保文件讀取端編碼一致 |
| 文件過大導致 OOM | 無滾動策略 | microlog 本身不支持滾動,建議定期手動清理或遷移成熟框架(如 logback-android) |
microlog4android 更新停滯多年,缺乏日誌滾動、異步寫入、結構化日誌等現代特性。新項目建議直接採用:
microlog4android 仍是舊項目快速加入文件日誌的可行方案。關鍵在於:使用支持 File 屬性的新版 JAR、正確配置 assets/microlog.properties、處理好運行時存儲權限。對於長期維護的項目,建議規劃遷移至 logback-android 等活躍維護的框架。