Flutter日志记录插件one_logger的使用
Flutter日志记录插件one_logger的使用
one_logger
是一个简单而强大的日志记录包,它可以以单行格式 [日期 级别 模块 消息]
输出日志。借助ANSI支持,它可以在控制台中增强日志的可读性。
示例
来自 examples/simple_logger_example.dart 的输出
特性
- 单行日志:每条日志都以单行格式输出,包含时间戳、日志级别、模块和消息。
- ANSI支持:根据日志级别对日志进行着色,使其在控制台中更容易区分。
- 可定制:各种选项允许你自定义日志记录行为以满足你的需求。
- Loki支持:将日志推送到 Loki。
使用方法
首先,创建一个 Logger
实例:
const logger = Logger();
或者,你可以通过配置更多的选项来创建 Logger
实例:
const logger = Logger(
service: "your_service_name",
defaultModule: "default_module_name",
lokiOptions: LokiOptions(lokiUrl: "your_loki_url"),
options: LoggerOptions(),
filter: DevelopmentLoggerFilter(),
// onLog: (params) { }, // 当有日志记录时调用
);
如果已配置 Loki,调用 startLoki()
方法以便在使用日志记录器之前开始推送日志:
logger.startLoki();
确保在完成日志记录器的使用后调用 disposeLoki()
方法:
logger.disposeLoki();
然后,你可以使用 Logger
的方法来记录消息:
logger.trace("这是一条跟踪日志");
logger.info("这是一条信息日志");
logger.warn("这是一条警告日志");
logger.error("这是一条错误日志");
logger.debug("这是一条调试日志");
类
LokiOptions
:配置 Loki 的选项,Loki 是一个水平扩展、高可用、多租户的日志聚合系统。LoggerOptions
:用于配置日志记录器的选项,包括每个日志级别的样式和是否启用 ANSI。LoggerFilter
:抽象类,表示过滤器,用于确定是否应打印或推送特定级别的日志。DevelopmentLoggerFilter
:适用于开发环境的日志记录器过滤器。ProductionLoggerFilter
:适用于生产环境的日志记录器过滤器。Logger
:主日志记录类,提供不同级别的日志记录方法。ansiPrint
:带有 ANSI 颜色代码的打印日志函数。
自定义
你可以通过在创建 Logger
时提供自己的 LoggerOptions
和 LoggerFilter
来自定义日志记录器的行为。这使你可以控制日志的颜色、是否启用 ANSI 以及哪些日志应该被打印或推送。
完整示例
以下是一个完整的示例,展示了如何使用 one_logger
插件:
import 'package:one_logger/one_logger.dart';
void main() async {
const logger = Logger(
service: 'one_logger',
defaultModule: 'example',
filter: MyLogFilter() // 过滤调试日志
);
logger.info('这是一条信息日志');
logger.warn('这是一条警告日志');
logger.error('这是一条错误日志');
logger.debug('这是一条调试日志');
try {
final list = [];
list[2];
} catch (e, st) {
logger.error(e, stackTrace: st);
}
}
class MyLogFilter extends LoggerFilter {
const MyLogFilter();
[@override](/user/override)
bool shouldPrintLog(Level level) {
// return level.index < Level.debug.index;
return true;
}
[@override](/user/override)
bool shouldPushLog(Level level) {
return true;
}
}
更多关于Flutter日志记录插件one_logger的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter日志记录插件one_logger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
one_logger
是一个用于 Flutter 应用的轻量级日志记录插件。它允许开发者以简单且灵活的方式记录应用程序中的日志信息。以下是如何在 Flutter 项目中使用 one_logger
的基本指南。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 one_logger
依赖:
dependencies:
flutter:
sdk: flutter
one_logger: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 one_logger
在你的应用启动时,通常是在 main.dart
文件中初始化 one_logger
:
import 'package:flutter/material.dart';
import 'package:one_logger/one_logger.dart';
void main() {
OneLogger.initialize(
// 可选的配置项
logLevel: LogLevel.verbose, // 设置日志级别
showTime: true, // 是否显示时间
showEmoji: true, // 是否显示Emoji
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
3. 记录日志
在你的代码中,你可以使用 OneLogger
来记录不同级别的日志:
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
OneLogger.verbose("This is a verbose log.");
OneLogger.debug("This is a debug log.");
OneLogger.info("This is an info log.");
OneLogger.warning("This is a warning log.");
OneLogger.error("This is an error log.");
OneLogger.fatal("This is a fatal log.");
return Scaffold(
appBar: AppBar(
title: Text("One Logger Example"),
),
body: Center(
child: Text("Check your logs!"),
),
);
}
}
4. 配置选项
one_logger
提供了一些可选的配置项,你可以在初始化时进行配置:
logLevel
: 设置日志的最低级别。低于该级别的日志将不会被记录。默认值为LogLevel.verbose
。showTime
: 是否在日志中显示时间戳。默认值为true
。showEmoji
: 是否在日志中显示 Emoji 图标。默认值为true
。customPrinter
: 自定义日志输出格式。
5. 高级用法
你还可以通过 OneLogger.custom
方法自定义日志输出:
OneLogger.custom(
level: LogLevel.info,
tag: 'CustomTag',
message: 'This is a custom log.',
error: Exception('Custom error'),
stackTrace: StackTrace.current,
);
6. 处理日志
你可以通过重写 OneLogger
的 onLogged
方法来处理日志,例如将日志发送到远程服务器或保存到本地文件:
OneLogger.onLogged = (LogEntry entry) {
// 处理日志,例如发送到服务器或保存到文件
print('Log handled: ${entry.message}');
};
7. 示例输出
假设你启用了 showTime
和 showEmoji
,日志输出可能如下所示:
📅 2023-10-05 12:34:56.789 🐛 [DEBUG] This is a debug log.
📅 2023-10-05 12:34:56.790 ℹ️ [INFO] This is an info log.
📅 2023-10-05 12:34:56.791 ⚠️ [WARNING] This is a warning log.
📅 2023-10-05 12:34:56.792 ❌ [ERROR] This is an error log.
📅 2023-10-05 12:34:56.793 ☠️ [FATAL] This is a fatal log.