Flutter日志管理插件logging_appenders的使用

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

Flutter日志管理插件logging_appenders的使用

插件介绍

logging_appenders 是一个原生的Dart包,用于与 logging 包一起使用的日志记录器。它支持多种类型的日志记录方式,包括本地和远程日志记录。

支持的日志记录类型:

  • 本地日志记录
    • print():通过 PrintAppender 类实现。
    • 文件滚动日志记录:通过 RotatingFileAppender 类实现。
  • 远程日志记录

性能注意事项

对于远程日志记录器,虽然在生产环境中使用可能需要谨慎考虑性能问题,但在测试阶段非常有用。它通过批量发送日志条目并设置合理的重试机制来保持较好的性能表现。

快速开始

在项目中引入 logginglogging_appenders 包后,可以按照以下步骤配置和使用日志记录器:

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

final _logger = Logger('main');

void main() {
  // 设置默认打印日志到控制台
  PrintAppender.setupLogging();

  // 或者更详细的配置:
  // Logger.root.level = Level.ALL;
  // PrintAppender(formatter: const ColorFormatter())..attachToLogger(Logger.root);

  _logger.fine('详细信息');
  _logger.info('一般信息');
  _logger.severe('严重错误');
}

输出示例

$ dart main.dart
2019-08-19 15:36:03.827563 FINE main - Lorem ipsum

异常链处理

为了更好地跟踪异常,可以通过扩展方法 causedBy() 来链接异常原因:

int test() {
  try {
    int.parse('a');
  } catch (e, stackTrace) {
    throw Exception('无法解析').causedBy(e, stackTrace);
  }
}

void main() {
  try {
    test();
  } catch (e, stackTrace) {
    _logger.severe('捕获到异常', e, stackTrace);
  }
}

颜色格式化输出

如果你希望让终端中的日志更加直观,可以使用颜色格式化器:

PrintAppender(formatter: const ColorFormatter())..attachToLogger(Logger.root);

标准错误输出

在命令行应用程序中,你可以定义哪些级别的日志应该输出到标准错误流(stderr)而不是标准输出流(stdout):

PrintAppender.setupLogging(stderrLevel: Level.SEVERE);

远程日志记录器

对于远程日志记录需求,例如使用 logz.io 的情况:

final _logzIoApiSender = LogzIoApiAppender(
  apiToken: '你的API密钥',
  url: 'https://listener-eu.logz.io:8071/',
  labels: {'app': 'MyApp', 'os': Platform.operatingSystem},
)..attachToLogger(Logger.root);

// 当不再需要时释放资源
_logzIoApiSender.dispose();

以上就是关于 logging_appenders 插件的基本使用方法,希望对您有所帮助!如果有任何疑问或需要进一步的帮助,请随时提问。


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

1 回复

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


当然,logging_appenders 是一个强大的 Flutter 插件,它允许你将日志输出到多个目的地,比如控制台、文件或远程服务器。以下是一个使用 logging_appenders 插件的示例代码,展示了如何配置和使用它来管理日志。

首先,确保你已经在 pubspec.yaml 文件中添加了 logging_appenders 依赖:

dependencies:
  flutter:
    sdk: flutter
  logging_appenders: ^x.y.z  # 替换为最新版本号

然后,运行 flutter pub get 来获取依赖。

接下来,你可以在你的 Flutter 应用中配置和使用 logging_appenders。以下是一个示例代码:

import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
import 'package:logging_appenders/logging_appenders.dart';

void main() {
  // 创建一个Logger实例
  final Logger logger = Logger('MyApp');

  // 配置日志级别
  Level level = Level.ALL;

  // 创建一个控制台Appender
  final ConsoleAppender consoleAppender = ConsoleAppender()
    ..setLogFormat('%d{yyyy-MM-dd HH:mm:ss.SSS} [%p] %c: %m%n');

  // 创建一个文件Appender
  final FileAppender fileAppender = FileAppender()
    ..setLogFormat('%d{yyyy-MM-dd HH:mm:ss.SSS} [%p] %c: %m%n')
    ..setFile('app_log.log');

  // 将Appender添加到Logger
  logger.level = level;
  logger.addAppender(consoleAppender);
  logger.addAppender(fileAppender);

  // 示例日志记录
  logger.info('Application started');
  logger.warning('This is a warning message');
  logger.severe('This is a severe error');

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Logging Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'Logging to console and file',
                style: TextStyle(fontSize: 20),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. 创建了一个 Logger 实例,并命名为 MyApp
  2. 配置了日志级别为 Level.ALL,这意味着将记录所有级别的日志。
  3. 创建了一个 ConsoleAppender,用于将日志输出到控制台,并设置了日志格式。
  4. 创建了一个 FileAppender,用于将日志输出到文件 app_log.log,并设置了日志格式。
  5. 将这两个 Appender 添加到 Logger 实例中。
  6. 记录了一些示例日志,包括信息、警告和严重错误。

运行这个 Flutter 应用时,你应该能在控制台看到日志输出,并且 app_log.log 文件也会包含相应的日志信息。

请注意,如果你在实际项目中需要更复杂的日志管理(例如,远程日志服务器、日志轮转等),你可能需要进一步自定义或扩展 logging_appenders 插件的功能。

回到顶部