Flutter日志管理插件clever_logger的使用

Flutter日志管理插件clever_logger的使用

一个具有彩色打印功能的日志库。

基本用法 🚀

您可以使用不同严重程度的日志记录器来记录消息。

默认的日志级别如下:

  • fine
  • info
  • config
  • warning
  • shout

使用默认的日志记录器记录一条信息级别的日志消息:

logInfo('Hello there!');

这将在控制台中打印该消息:

[Logger - INFO] Hello there!

创建一个日志记录器并使用它来记录消息:

final logger = CleverLogger('Test Logger');
// 现在可以使用此日志记录器
logger.logFine('Hello there!');

高级用法 🧪

日志操作

日志操作负责处理日志(例如将它们存储到文件或将它们发送到您的分析服务)。

LogRecords 按顺序传递给操作。默认情况下,日志记录器使用 ColorfulPrintAction 作为其默认操作,负责将彩色输出打印到控制台。

final otherLogger = CleverLogger(
  'Other Logger',
  logActions: [
    // 默认的彩色控制台输出。
    ColorfulPrintAction(),
    // 自定义操作
    MyLogAction(),
  ],
);

日志操作也可以配置为仅对具有特定级别的日志运行。

class MyLogAction extends LogAction {
  [@override](/user/override)
  Level get level => Level.INFO;

  [@override](/user/override)
  void onRecord(LogRecord record) {
    // 这仅在日志级别大于等于 Level.info 时执行
    print('${record.loggerName} has a log with ${record.level}');
  }
}

功能扩展

您可以编写扩展方法以扩展日志记录器的功能。日志记录器中的 value 变量可以存储附加值。

默认情况下,日志记录器集成有一个 Stopwatch 扩展。

有关更多信息,请参见 示例

自定义打印

扩展 ColorfulPrintAction 并重写默认的打印函数,如 printInfoprintWarning 等,以便自定义打印消息样式。

您可以使用 ansicolor 插件进行彩色打印。

示例代码

以下是完整的示例代码:

import 'package:clever_logger/clever_logger.dart';
import 'package:clever_logger/extension.dart';

// 这是您的日志记录器。您可以将其定义为全局或局部。
final logger = CleverLogger('Test Logger', logActions: [
  ColorfulPrintAction(
    printer: EmojiPrinter(),
  ),
]);

void main(List<String> arguments) async {
  // 使用默认日志记录器
  logInfo('Hello there');

  logger.log('Something not important', Level.FINE);
  logger.log('This is a info', Level.INFO);
  logger.log('This is a config', Level.CONFIG);
  logger.log(Exception('Oh ho'), Level.WARNING);

  logger.log('This is severe', Level.SEVERE);
  logger.log('This is a LOUD', Level.SHOUT);

  final otherLogger = CleverLogger(
    'Other Logger',
    logActions: [
      // 默认的彩色控制台输出。
      ColorfulPrintAction(),
      // 自定义操作
      MyLogAction(),
    ],
  );

  otherLogger.logFine('A message');

  // 这将运行 [MyLogAction] 的 `onRecord`
  otherLogger.logWarning('Another one');

  // 使用此日志记录器上的默认扩展来使用秒表
  logger.startWatch();
  await Future.delayed(const Duration(milliseconds: 500));
  logger.finishWatch();

  // 自定义扩展以使用此日志记录器进行计数
  // 查看示例文件夹中的 extension.dart 以了解如何为 [CleverLogger] 创建扩展
  logger.countUp();
  logger.countUp('other');
  logger.resetCount('other');
}

class MyLogAction extends LogAction {
  [@override](/user/override)
  Level get level => Level.INFO;

  [@override](/user/override)
  void onRecord(LogRecord record) {
    // 这仅在日志级别大于等于 Level.info 时执行
    print('${record.loggerName} has a log with ${record.level}');
  }
}

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

1 回复

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


clever_logger 是一个用于 Flutter 应用的日志管理插件,它提供了简洁的 API 和强大的功能,帮助你更好地管理和调试应用中的日志信息。以下是 clever_logger 的基本使用方法和一些常见功能的介绍。

1. 安装插件

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

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

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

2. 基本用法

在你的 Dart 文件中引入 clever_logger

import 'package:clever_logger/clever_logger.dart';

然后你可以创建一个 Logger 实例并开始记录日志:

final logger = Logger();

void main() {
  logger.d('This is a debug message');
  logger.i('This is an info message');
  logger.w('This is a warning message');
  logger.e('This is an error message');
}

3. 日志级别

clever_logger 支持不同的日志级别,你可以根据需要选择适当的级别:

  • Logger.d(): 调试信息(Debug)
  • Logger.i(): 一般信息(Info)
  • Logger.w(): 警告信息(Warning)
  • Logger.e(): 错误信息(Error)

4. 自定义日志输出

你可以通过设置 Loggerprinter 来自定义日志的输出格式。clever_logger 提供了 PrettyPrinter 来美化日志输出:

final logger = Logger(
  printer: PrettyPrinter(
    methodCount: 2,  // 显示的方法调用栈数量
    colors: true,    // 是否启用颜色
    printEmojis: true, // 是否打印表情符号
  ),
);

logger.d('This is a debug message');

5. 日志过滤

你可以通过设置 Loggerlevel 来过滤日志输出。例如,如果你只想记录 Warning 及以上级别的日志:

final logger = Logger(
  level: Level.warning,
);

logger.d('This debug message will not be printed');
logger.w('This warning message will be printed');

6. 日志文件输出

clever_logger 还支持将日志输出到文件中。你可以使用 FileOutput 来实现这一点:

import 'package:clever_logger/clever_logger.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as path;

void main() async {
  final directory = await getApplicationDocumentsDirectory();
  final logFile = path.join(directory.path, 'app.log');

  final logger = Logger(
    printer: PrettyPrinter(),
    output: FileOutput(logFile),
  );

  logger.i('This log will be written to a file');
}

7. 日志标签

你可以为日志添加标签,以便更好地组织和过滤日志:

final logger = Logger(
  tag: 'MyApp',
);

logger.d('This is a debug message with a tag');

8. 日志堆栈跟踪

你可以在记录错误时包含堆栈跟踪信息:

try {
  // 一些可能会抛出异常的代码
} catch (e, stackTrace) {
  logger.e('An error occurred', error: e, stackTrace: stackTrace);
}

9. 日志格式化

你可以通过自定义 Formatter 来格式化日志输出:

final logger = Logger(
  printer: PrettyPrinter(
    formatter: (log) => '${log.level.name}: ${log.message}',
  ),
);

logger.d('This is a custom formatted log');

10. 日志拦截器

clever_logger 还支持日志拦截器,你可以在日志被输出之前对其进行处理:

final logger = Logger(
  interceptors: [
    (log) {
      // 对日志进行一些处理
      return log;
    },
  ],
);

logger.d('This log will be intercepted');
回到顶部