Flutter日志记录插件logger_easier的使用
Flutter日志记录插件logger_easier的使用

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

目录
✨ 关键特性
- 多级日志管理:支持七个日志级别(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
接口。例如:将日志发送到远程服务器。
日志轮转
通过自动日志轮转防止日志文件变得过大。

轮转策略
- 基于大小 (
SizeBasedStrategy
): 当文件超过指定大小时轮转。 - 基于时间 (
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
更多关于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
提供了 PrettyPrinter
和 SimplePrinter
两种默认的打印机。
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!'),
),
),
);
}
}