Flutter日志记录插件logger_easier的使用

Flutter日志记录插件logger_easier的使用

logo

一个为Dart和Flutter应用设计的现代日志解决方案。它提供了丰富的功能和灵活的配置选项,简化了日志管理。

screenshot

目录

✨ 关键特性

  • 多级日志管理:支持七个日志级别(TRACE, DEBUG, INFO, WARN, ERROR, CRITICAL, FATAL),允许对日志输出进行细粒度控制。
  • 插件式架构:利用中间件实现扩展性。轻松集成自定义或第三方日志处理器。
  • 强大的日志轮转:提供基于大小和基于时间的日志轮转策略,并自动压缩和清理旧日志。
  • 多样化的输出选项:支持控制台输出(带颜色)、文件输出、自定义输出和异步日志。
  • 高性能异步模式:确保非阻塞日志记录,通过批量处理优化性能。
  • 灵活的格式化和过滤:自定义日志格式,包括时间戳、级别和错误消息。根据级别或模式过滤日志。
  • 运行时监控:内置性能跟踪和错误处理,测量操作持续时间和自动捕获未捕获的异常。

📦 安装

在你的 pubspec.yaml 文件中添加依赖:

dependencies:
  logger_easier: ^latest_version

然后运行:

flutter pub get

🚀 入门指南

import 'package:logger_easier/logger_easier.dart';

void main() {
  final logger = Logger(
    minLevel: LogLevel.debug,
    middlewares: [
      ConsoleMiddleware(),
      FileMiddleware(
        logDirectory: 'logs',
        baseFileName: 'app.log',
        rotateConfig: LogRotateConfig(
          strategy: SizeBasedStrategy(
            maxSize: 10 * 1024 * 1024, // 10MB
            maxBackups: 5,
          ),
        ),
      ),
    ],
  );

  logger.trace('This is a trace log');
  logger.debug('This is a debug log');
  logger.info('This is an info log');
  logger.warn('This is a warning log');
  logger.error('This is an error log', error: Exception('An error occurred'));
  logger.critical('This is a critical error log');
  logger.fatal('This is a fatal error log');
}

📖 核心概念

日志级别

Logger Easier 支持七个日志级别,从最低到最高严重性排列:

  • TRACE: 最详细的级别,通常用于调试。
  • DEBUG: 开发期间用于调试。
  • INFO: 一般操作日志,表示进度。
  • WARN: 非关键问题或警告。
  • ERROR: 需要关注的重要问题。
  • CRITICAL: 影响应用程序稳定性的严重错误。
  • FATAL: 导致应用程序终止的不可恢复错误。

通过 Logger 中的 minLevel 参数控制输出级别。例如,将 minLevel 设置为 LogLevel.info 只会输出 INFO 及以上级别的日志。

日志中间件

Logger Easier 的中间件在特定阶段(如格式化、过滤和输出)处理日志。结合各种中间件可以自定义日志管道。

内置中间件

  • ConsoleMiddleware: 将日志输出到控制台并带有颜色编码。
  • FileMiddleware: 将日志写入文件并支持轮转。

自定义中间件

要创建自定义中间件,请实现 AbstractLogMiddleware 接口。例如:将日志发送到远程服务器。

日志轮转

通过自动日志轮转防止日志文件变得过大。

logger_easier_for_log_rotate

轮转策略

  1. 基于大小 (SizeBasedStrategy): 当文件超过指定大小时轮转。
  2. 基于时间 (TimeBasedStrategy): 按固定间隔轮转。

压缩处理

Logger Easier 支持在轮转期间对文件进行压缩以节省空间。实现 CompressionHandler 接口以自定义算法或使用内置的 GzipCompressionHandler

轮转配置

使用 LogRotateConfig 自定义轮转,包括旋转策略、压缩和存储监控选项。

🛠️ 高级用法

自定义中间件

开发定制的中间件以集成第三方服务或独特的日志处理逻辑。

日志加密

使用 LogEncryptor 类安全地保护敏感日志。示例:

final encryptor = LogEncryptor('your-secret-key');
await encryptor.encrypt(File('logs/app.log'), File('logs/app.log.enc'));

✅ 最佳实践

  • 在应用程序生命周期早期初始化日志记录。
  • 根据清晰性和性能选择适当的日志级别。
  • 避免在日志中暴露敏感数据。
  • 定期审查和分析日志以发现问题。
  • 使用轮转和压缩来管理存储。

📚 API 文档

探索详细的 API 文档:API 参考

👏 贡献指南

我们欢迎通过问题、拉取请求或文档改进进行贡献。请阅读 CONTRIBUTING.md 了解更多细节。


📜 许可证

本项目采用 MIT 许可证。更多信息请参阅 LICENSE

享受使用 Logger Easier!如果觉得这个库有用,请给我们一个 ⭐️。


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

1 回复

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


logger_easier 是一个简单易用的 Flutter 日志记录插件,它提供了灵活的日志级别、颜色输出、日志格式化等功能,方便开发者在 Flutter 应用中进行日志记录和调试。

安装

首先,在 pubspec.yaml 文件中添加 logger_easier 依赖:

dependencies:
  flutter:
    sdk: flutter
  logger_easier: ^1.0.0  # 请使用最新版本

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

基本使用

1. 初始化 Logger

在你的 Dart 文件中导入 logger_easier 并创建一个 Logger 实例:

import 'package:logger_easier/logger_easier.dart';

final logger = Logger();

2. 记录日志

Logger 提供了不同级别的日志记录方法:

logger.v('Verbose log');  // 详细日志
logger.d('Debug log');    // 调试日志
logger.i('Info log');     // 信息日志
logger.w('Warning log');  // 警告日志
logger.e('Error log');    // 错误日志
logger.wtf('WTF log');    // 严重错误日志

3. 日志级别

你可以设置日志的级别,只有高于或等于该级别的日志才会被输出:

logger.level = Level.debug;  // 只输出 debug 及以上级别的日志

Level 的取值包括:

  • Level.verbose
  • Level.debug
  • Level.info
  • Level.warning
  • Level.error
  • Level.wtf

4. 自定义日志格式

你可以通过 Printer 自定义日志的输出格式。logger_easier 提供了 PrettyPrinterSimplePrinter 两种默认的打印机。

logger.printer = PrettyPrinter(
  colors: true,  // 启用颜色输出
  printEmojis: true,  // 打印表情符号
  printTime: true,  // 打印时间
);

5. 日志输出到文件

logger_easier 支持将日志输出到文件。你可以使用 FileOutput 来实现:

import 'dart:io';

logger.addOutput(FileOutput(File('log.txt')));

示例代码

以下是一个完整的示例代码,展示了如何使用 logger_easier

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

void main() {
  final logger = Logger(
    printer: PrettyPrinter(
      colors: true,
      printEmojis: true,
      printTime: true,
    ),
    level: Level.debug,
  );

  logger.addOutput(FileOutput(File('log.txt')));

  logger.v('Verbose log');
  logger.d('Debug log');
  logger.i('Info log');
  logger.w('Warning log');
  logger.e('Error log');
  logger.wtf('WTF log');

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Logger Easier Example'),
        ),
        body: Center(
          child: Text('Check your logs!'),
        ),
      ),
    );
  }
}
回到顶部