Flutter日志管理插件flutter_xlog的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter日志管理插件flutter_xlog的使用

flutter_xlog

这是一个用于在Flutter项目中使用腾讯Mars-XLog的日志管理插件。

使用

导入包

首先,你需要在pubspec.yaml文件中添加flutter_xlog依赖。然后在你的Dart文件中导入这个包:

import 'package:flutter_xlog/flutter_xlog.dart';

打开XLog

在使用XLog之前,你需要先调用XLog.open()方法来初始化XLog。以下是一个示例:

import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_xlog/flutter_xlog.dart';
import 'package:path_provider/path_provider.dart';

var cacheDir = '';
var logDir = '';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 获取缓存目录
  cacheDir = (await getApplicationCacheDirectory()).path;

  // 根据平台获取日志目录
  if (Platform.isAndroid) {
    logDir = (await getExternalCacheDirectories())?[0].path ?? cacheDir;
  } else if (Platform.isIOS) {
    logDir = (await getApplicationSupportDirectory()).path;
  }

  // 初始化XLog
  await XLog.open(XLogConfig(cacheDir: cacheDir, logDir: logDir, consoleLogOpen: true));

  // 启动应用
  runApp(const MyApp());
}

写日志

在应用运行过程中,你可以使用XLog类的不同方法来记录不同级别的日志。例如:

class _MyAppState extends State<MyApp> {

  @override
  Widget build(BuildContext context) {
    // 记录信息级别的日志
    XLog.i("MyApp", "build _MyAppState");

    // 在隔离进程中记录日志
    compute((message) {
      XLog.i("MyApp", "$message in Isolate");
    }, "compute in build");

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('FlutterXLog example app'),
        ),
        body: Column (
          children: [
            Text('缓存的XLog位于$cacheDir\n写入的XLog位于$logDir\n'),
            TextButton(onPressed: () {
              XLog.i("MyApp", "点击事件");
              XLog.close();
            }, child: const Text('关闭XLog'))
          ]
        ),
      ),
    );
  }
}

关闭XLog

如果你需要切换用户账户,可能需要关闭XLog。可以使用XLog.close()方法来关闭它:

TextButton(onPressed: () {
  XLog.i("MyApp", "点击事件");
  XLog.close();
}, child: const Text('关闭XLog'))

Android问题

保持XLog类在proguard文件中

如果你使用了ProGuard来混淆代码,你需要确保保留XLog相关的类。在你的ProGuard配置文件中加入以下规则:

-keep class com.tencent.mars.** { *; }

选择libc++_shared

当你以调试模式运行时,可能会遇到这样的问题:

2 files found with path 'lib/arm64-v8a/libc++_shared.so' from inputs:
- xxxx
- xxxx

为了解决这个问题,你可以将libc++_shared.so复制到你的应用项目中,并在build.gradle中进行选择:

packagingOptions {
    pickFirst 'jniLibs/armeabi-v7a/libc++_shared.so'
    pickFirst 'jniLibs/arm64-v8a/libc++_shared.so'
}

更多关于Flutter日志管理插件flutter_xlog的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter日志管理插件flutter_xlog的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何使用Flutter日志管理插件flutter_xlog的代码案例。这个插件可以帮助你更好地管理和输出应用日志,特别是在开发和调试阶段非常有用。

首先,确保你的Flutter项目中已经添加了flutter_xlog依赖。在pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_xlog: ^最新版本号  # 请替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

接下来,在你的Flutter应用中配置和使用flutter_xlog。以下是一个简单的示例:

  1. 初始化flutter_xlog

在应用的入口文件(通常是main.dart)中初始化flutter_xlog

import 'package:flutter/material.dart';
import 'package:flutter_xlog/flutter_xlog.dart';

void main() {
  // 初始化XLog
  XLog.instance
    ..init(
      logDir: 'logs', // 日志存储目录
      maxFileSize: 10 * 1024 * 1024, // 单个日志文件最大大小(10MB)
      maxFileCount: 10, // 保留的最大日志文件数量
      level: XLogLevel.verbose, // 日志级别
      enableConsole: true, // 是否输出到控制台
      enableFile: true, // 是否输出到文件
    )
    ..info('App started'); // 记录一条信息日志

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter XLOG Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 记录不同级别的日志
            XLog.instance.verbose('This is a verbose log');
            XLog.instance.debug('This is a debug log');
            XLog.instance.info('This is an info log');
            XLog.instance.warn('This is a warn log');
            XLog.instance.error('This is an error log');
          },
          child: Text('Log Messages'),
        ),
      ),
    );
  }
}
  1. 查看日志文件

日志文件将存储在应用的logs目录下(根据上面的配置)。你可以通过设备的文件管理器或连接设备到电脑后使用ADB等工具查看这些日志文件。

  1. 清理日志

如果需要,你可以在应用中的某个地方添加清理日志的逻辑:

void clearLogs() {
  XLog.instance.clearLogs();
}

然后你可以在需要的地方调用这个函数,比如在某个按钮的点击事件中。

这个示例展示了如何在Flutter应用中集成和使用flutter_xlog插件来记录和管理日志。根据你的具体需求,你可以进一步自定义日志的存储位置、日志级别和其他配置。

回到顶部