如何在Flutter中消除video_player产生的冗余日志信息?
解决Flutter video_player大量无用日志干扰调试的问题
以下是几个可行的解决办法,帮你过滤掉video_player产生的冗余日志:
一、通过VS Code启动配置过滤日志
修改.vscode/launch.json文件,在启动参数中添加日志级别过滤,只保留警告及以上级别的日志:
{ "version": "0.2.0", "configurations": [ { "name": "Flutter", "request": "launch", "type": "dart", "args": [ "--filter-log-level", "warning" ] } ] }
这样终端只会输出warning、error级别的日志,直接屏蔽掉video_player的info级冗余输出。
二、针对原生平台禁用播放器日志
Android端(禁用ExoPlayer日志)
在android/app/src/main/kotlin/[你的包路径]/MainActivity.kt中添加日志级别设置:
import android.os.Bundle import androidx.annotation.NonNull import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import com.google.android.exoplayer2.util.Log class MainActivity: FlutterActivity() { override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { super.configureFlutterEngine(flutterEngine) // 只保留警告及以上日志 Log.setLogLevel(Log.LOG_LEVEL_WARNING) } }
iOS端(禁用AVPlayer日志)
在ios/Runner/AppDelegate.swift中调整AVPlayer的日志级别:
import UIKit import Flutter import AVFoundation @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { // 仅输出错误级日志 AVPlayer.logLevel = .error GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } }
三、通过Dart代码拦截过滤日志
在项目入口文件中添加日志监听,过滤掉VideoPlayer标签的日志:
import 'dart:developer'; import 'package:flutter/material.dart'; void main() { // 监听所有日志输出,过滤video_player相关日志 Logger.root.onRecord.listen((record) { if (record.loggerName != 'VideoPlayer') { print('${record.level.name}: ${record.message}'); } }); runApp(const MyApp()); }
这种方式能在Dart层直接屏蔽掉video_player的所有日志输出,不影响其他业务日志。
内容的提问来源于stack exchange,提问作者Mohammad Khan Awan
相关产品推荐
相关产品推荐

