首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android Log.d() 在 Logcat 中不顯示:標籤過濾、日志級別、緩衝區大小排查指南

     編輯:程式設計疑難解答

常見原因速查表

原因現象解決
標籤過濾Logcat 設置了 tag 過濾,當前 tag 未顯示清除過濾器或輸入正確 tag
日志級別Logcat 級別設置為 Warning/Error,Debug 被隱藏選擇 Verbose 或 Debug 級別
緩衝區太小日志產生太快,舊日志被覆蓋設置 adb logcat -G 16M 增大緩衝區
進程未選中Logcat 顯示其他進程日志下拉選單選擇正確包名進程
代碼未執行斷點/邏輯導致 Log.d 不走打斷點/添加 Toast 驗證執行路徑
ProGuard 混淆發布包移除 Log 調用配置 -assumenosideeffects class android.util.Log { *; } 僅釋構建

標準調試步驟

1. 設置固定 TAG(便於過濾)

public class MyActivity extends AppCompatActivity {
    private static final String TAG = "MyActivity"; // 類名作為 TAG
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate 執行了"); // 使用固定 TAG
    }
}

2. Logcat 界面操作

  • 過濾框:輸入 MyActivity 只看該 TAG
  • 級別下拉:選 Verbose (顯示所有) 或 Debug
  • 進程下拉:選擇 com.your.package (應用進程)
  • 搜索框:輸入關鍵字高亮

3. 命令行驗證(繞過 IDE 顯示問題)


# 查看指定包名的所有日志
adb logcat -s MyActivity:D *:S

# 增大緩衝區到 16MB
adb logcat -G 16M

# 保存到文件分析
adb logcat -d > logcat.txt

4. 代碼中強制輸出(排除級別問題)


// 臨時測試用
System.out.println("=== DEBUG: onCreate executed ==="); // 控制台直接輸出
Log.i(TAG, "INFO 級別測試"); // Info 級別更難被過濾
Log.wtf(TAG, "ASSERT 級別,必定顯示"); // 最高級別

AS/IDEA 具體設置


// Android Studio: Run/Debug Configurations → Miscellaneous → 
// 勾選 "Show logcat automatically" 
// Logcat 窗口 → 右側齒輪 → "Edit filter configuration" → 
// 新建過濾器:Tag = "MyActivity", Log Level = Verbose

真機調試注意事項

  • 開發者選項 → **啟用 USB 調試**
  • 開發者選項 → **選擇模擬二級存儲** (部分機型影響日志)
  • 部分國產 ROM (MIUI/ColorOS/EUI) 默認限制日志,需在開發者選項開啟「日志輸出」或「USB 日志」
  • 真機建議使用 adb logcat 命令行,比 IDE 穩定

總結

  1. 🥇 **第一步**:Logcat 選 Verbose 級別、正確進程、清除 tag 過濾
  2. 🥈 **第二步**:代碼用**固定 TAG** + Log.d(TAG, msg)
  3. 🥉 **第三步**:adb logcat -s TAG:D *:S 命令行驗證
  4. 💡 **核心**:90% 是 Logcat 界面過濾/級別/進程設置問題,非代碼問題
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved