Flutter日志记录插件basic_logger的使用

Flutter日志记录插件basic_logger的使用

BasicLogger 是一个快速、可扩展、简单且轻量级的日志记录工具,适用于Dart和Flutter。

特性

它作为一个单文件模块分发,并且除了Dart标准库外没有任何依赖。

开始使用

在你的项目中添加basic_logger包:

flutter pub add basic_logger

基本用法

// 设置根日志级别为所有日志
Logger.root.level = Level.ALL;

// 创建名为'main'的日志实例
final basicLogger = BasicLogger('main');

// 将开发者日志附加到日志实例
basicLogger.attachLogger(DevOutputLogger(parentName: basicLogger.name));

// 将控制台日志附加到日志实例
// selfname: 日志名称,默认为控制台
// selfonly: 当为true时,仅过滤自身日志。否则输出所有日志。
final consoleLogger = basicLogger.attachLogger(OutputLogger(
  basicLogger.name,
  // selfname: 'console',
  // selfonly: true,
));

// 输出信息到所有附加的实例
basicLogger.info('hello world');

// 输出缓冲区到所有附加的实例,不包括已分离的实例
basicLogger.output();

// 输出结果:
// 2024-10-15 02:52:11.405809 [INFO] main: hello world

Flutter中的使用

在Flutter应用中使用basic_logger

// 设置根日志级别为所有日志
Logger.root.level = Level.ALL;

// 创建名为'main'的日志实例
final basicLogger = BasicLogger('main');

// 将观察者附加到日志实例,控制台日志使用debugPrint
basicLogger.attachLogger(
  OutputLogger(basicLogger.name)..record = debugPrint,
);

// 输出信息到所有附加的实例
basicLogger.info('hello world');

额外信息

文件输出日志

对于Android、iOS、Linux、macOS和Windows平台,可以使用FileOutputLogger进行基于文件的日志记录。

首先添加basic_logger_file包:

flutter pub add basic_logger_file

然后指定输出文件路径:

// 将文件输出日志附加到日志实例
basicLogger.attachLogger(FileOutputLogger(
  parentName: basicLogger.name,
  dir: './logs/',
));

// 指定输出缓冲区大小
basicLogger.attachLogger(FileOutputLogger(
  parentName: basicLogger.name,
  bufferSize: 100,
));

// 输出并清除缓冲区
basicLogger.output();

示例代码

以下是一个完整的示例代码,展示了如何使用basic_logger进行日志记录:

import 'package:basic_logger/basic_logger.dart';
import 'package:logging/logging.dart';

void main() {
  // 设置根日志级别为所有日志
  Logger.root.level = Level.ALL;

  // 创建名为'main'的日志实例
  final basicLogger = BasicLogger('main');

  // 将开发者日志附加到日志实例
  basicLogger.attachLogger(DevOutputLogger(parentName: basicLogger.name));

  // 将控制台日志附加到日志实例
  // selfname: 日志名称,默认为控制台
  // selfonly: 当为true时,仅过滤自身日志。否则输出所有日志。
  final consoleLogger = basicLogger.attachLogger(OutputLogger(
    basicLogger.name,
    selfname: 'console',
    // selfonly: true,
  ));

  // 输出信息到控制台
  consoleLogger.info('console output 1234');

  // 输出调试信息到所有附加的实例
  basicLogger.debug('debug a1');

  // 输出信息到所有附加的实例
  basicLogger.info('info a1');

  // 输出缓冲区到所有附加的实例,不包括已分离的实例
  basicLogger.output();

  // 显示所有附加的Logger实例名称
  print(basicLogger.attachedNames);

  // 显示所有附加的OutputLogger实例名称
  print(basicLogger.listenNames);

  // 显示基本Logger的子节点
  print(basicLogger.logger.children);
}

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

1 回复

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


basic_logger 是一个简单的日志记录插件,适用于 Flutter 应用程序。它提供了一个轻量级的解决方案,用于记录应用程序中的日志信息。以下是如何在 Flutter 项目中使用 basic_logger 插件的步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 basic_logger 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  basic_logger: ^1.0.0  # 请使用最新的版本号

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

2. 初始化 Logger

在你的 Dart 文件中,导入 basic_logger 并初始化 Logger:

import 'package:basic_logger/basic_logger.dart';

void main() {
  // 初始化 Logger
  Logger.init();
  
  // 运行你的应用程序
  runApp(MyApp());
}

3. 记录日志

你可以在应用程序的任何地方使用 Logger 来记录日志信息。basic_logger 提供了多个日志级别,如 debug, info, warning, error, 和 fatal

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    // 记录不同级别的日志
    Logger.debug('这是一个调试信息');
    Logger.info('这是一个信息日志');
    Logger.warning('这是一个警告日志');
    Logger.error('这是一个错误日志');
    Logger.fatal('这是一个致命错误日志');

    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

4. 配置 Logger

你可以通过 Logger.setup 方法来配置 Logger 的行为,例如设置日志级别、是否打印时间戳等。

void main() {
  // 配置 Logger
  Logger.setup(
    level: LogLevel.debug,  // 设置日志级别
    printTime: true,        // 是否打印时间戳
  );

  runApp(MyApp());
}

5. 自定义日志输出

如果你想自定义日志的输出格式,你可以通过重写 Loggerlog 方法来实现。

class CustomLogger extends Logger {
  [@override](/user/override)
  void log(LogLevel level, String message, {String? tag}) {
    // 自定义日志输出格式
    String logMessage = '[${DateTime.now()}] [$level] $message';
    print(logMessage);
  }
}

void main() {
  // 使用自定义 Logger
  Logger.init(CustomLogger());

  runApp(MyApp());
}

6. 其他功能

basic_logger 还支持其他一些功能,例如:

  • 日志标签:你可以为日志添加标签,以便更好地分类和过滤日志。

    Logger.info('这是一个带标签的日志', tag: 'MyTag');
    
  • 日志文件:你可以将日志输出到文件中,以便在需要时进行分析。

7. 示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 项目中使用 basic_logger

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

void main() {
  // 初始化并配置 Logger
  Logger.init();
  Logger.setup(
    level: LogLevel.debug,
    printTime: true,
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    // 记录不同级别的日志
    Logger.debug('这是一个调试信息');
    Logger.info('这是一个信息日志');
    Logger.warning('这是一个警告日志');
    Logger.error('这是一个错误日志');
    Logger.fatal('这是一个致命错误日志');

    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Logger Example'),
      ),
      body: Center(
        child: Text('查看控制台中的日志输出'),
      ),
    );
  }
}
回到顶部