Flutter日志管理插件strategic_logger的使用
Flutter日志管理插件strategic_logger的使用
Strategic Logger - One Call Logs All!
Strategic Logger
是一个易于使用且可扩展的日志记录库,支持多种日志策略,如 Firebase Crashlytics、Sentry、Firebase Analytics 等。
如果你觉得这个项目有用,请在 GitHub 上给它点个星🌟来支持项目。
特性
- 多种内置日志策略:已经实现了 Firebase Crashlytics、Sentry、Firebase Analytics 和控制台日志(ConsoleLog)。
- 可定制:可以根据应用需求扩展自定义日志策略。
- 易于使用:简单的 API 可以在所有集成的服务中记录消息、错误和致命事件。
- 强大的错误处理:包含预定义的错误类型,有效处理常见的日志记录错误。
入门指南
添加依赖
在 pubspec.yaml
文件中添加 strategic_logger
依赖:
dependencies:
strategic_logger: ^0.1.10
初始化
在应用启动时初始化日志记录器:
import 'package:strategic_logger/strategic_logger.dart';
void main() {
logger.initialize(
level: LogLevel.info,
strategies: [
ConsoleLogStrategy(),
FirebaseAnalyticsLogStrategy(),
FirebaseCrashlyticsLogStrategy(),
],
);
}
使用
记录日志非常简单:
logger.log('This is an info log');
logger.error('This is an error message');
logger.fatal('This is a fatal error');
你还可以记录详细的事件:
logger.log('User logged in', event: LogEvent(eventName: 'user_login'));
文档
完整的文档,包括所有配置选项和高级用法示例,请参阅 示例标签。
扩展日志记录器(自定义策略)
要添加自定义日志策略,可以继承 LogStrategy
类:
class MyCustomLogStrategy extends LogStrategy {
@override
Future log({dynamic message, LogEvent? event}) async {
// 实现自定义日志记录逻辑
}
}
在初始化日志记录器时注册你的自定义策略:
logger.initialize(
level: LogLevel.info,
strategies: [
ConsoleLogStrategy(),
FirebaseAnalyticsLogStrategy(),
FirebaseCrashlyticsLogStrategy(),
MyCustomLogStrategy(),
],
);
贡献
欢迎贡献!请阅读我们 GitHub 仓库中的贡献指南以开始贡献。
许可证
Strategic Logger
采用 MIT 许可证发布。
示例代码
以下是一个示例,展示了如何初始化、配置和使用 Strategic Logger
,并使用多种日志策略。
import 'package:strategic_logger/logger.dart';
/// 示例演示了如何初始化、配置和使用 Strategic Logger,以及如何使用多种日志策略。
///
/// 该示例初始化了一个带有多种策略的日志记录器,包括控制台日志记录、Firebase Crashlytics 和 Firebase Analytics。
/// 它展示了如何记录简单的消息、结构化事件,并根据环境变化或特定应用需求重新配置日志记录器。
///
/// 日志记录器在初始化时设置了默认的日志级别和策略,可以根据需要重新配置。该示例还展示了如何记录不同类型的事件,
/// 包括错误和购买事件,这些对于跟踪应用使用情况和问题非常有用。
void main() {
// 初始化日志记录器一次,设置其策略和日志级别。
logger.initialize(
level: LogLevel.error, // 定义从哪个日志级别开始触发日志记录。
strategies: [
// 注册日志记录器将调用的日志策略。一些策略已经实现以方便使用。
ConsoleLogStrategy(), // ConsoleLogStrategy 使用 developer.log 包。
// 其他策略可以通过继承 LogStrategy 并在此处注册来实现。
],
);
logger.log('logging'); // 调用 ConsoleLogStrategy() 的 log 方法,仅传递消息。
logger.error('error'); // 调用 ConsoleLogStrategy() 的 error 方法,仅传递错误。
logger.fatal('fatal error'); // 调用 ConsoleLogStrategy() 的 fatal 方法,仅传递致命错误。
// 在初始化后重新配置日志记录器不推荐,除非有强烈理由。
logger.reconfigure(
level: LogLevel.error, // 定义从哪个日志级别开始触发日志记录。
strategies: [
// 注册日志记录器将调用的日志策略。一些策略已经实现以方便使用。
ConsoleLogStrategy(), // ConsoleLogStrategy 使用 developer.log 包。
FirebaseCrashlyticsLogStrategy(), // FirebaseCrashlyticsLogStrategy 将错误记录到 Crashlytics(此策略将使用你的环境配置)。
FirebaseAnalyticsLogStrategy(), // FirebaseAnalyticsLogStrategy 将事件记录到 Firebase Analytics(此策略将使用你的环境配置)。
// 其他策略可以通过继承 LogStrategy 并在此处注册来实现。
],
);
logger.log('logging'); // 调用 ConsoleLogStrategy()、FirebaseCrashlyticsLogStrategy() 和 FirebaseAnalyticsLogStrategy() 的 log 方法,仅传递消息。
logger.error('error'); // 调用 ConsoleLogStrategy()、FirebaseCrashlyticsLogStrategy() 和 FirebaseAnalyticsLogStrategy() 的 error 方法,仅传递错误。
logger.fatal('fatal error'); // 调用 ConsoleLogStrategy()、FirebaseCrashlyticsLogStrategy() 和 FirebaseAnalyticsLogStrategy() 的 fatal 方法,仅传递致命错误。
// 要发送更结构化的日志,我们可以发送一个 LogEvent(所有策略都会被调用)。
logger.log(
'purchase completed',
event: ConsoleLogEvent(
eventName: 'PURCHASE_COMPLETED',
parameters: {'key': 'value', 'key2': 'value'},
),
);
// 要注册某个策略的特定事件,我们可以专门化事件(仅调用控制台日志)。
logger.log(
'purchase completed',
event: ConsoleLogEvent(
eventName: 'PURCHASE_COMPLETED',
parameters: {'key': 'value', 'key2': 'value'},
),
);
// 要注册某个策略的特定事件,我们可以专门化事件(仅调用 Firebase Analytics)。
logger.log(
'purchase completed',
event: FirebaseAnalyticsLogEvent(
eventName: 'PURCHASE_COMPLETED',
parameters: {'key': 'value', 'key2': 'value'},
),
);
// 要注册某个策略的特定事件,我们可以专门化事件(仅调用 Firebase Crashlytics)。
logger.error(
'non-fatal error',
event: FirebaseCrashlyticsLogEvent(
eventName: 'ERROR',
parameters: {'key': 'value', 'key2': 'value'},
),
);
logger.fatal(
'fatal error',
event: FirebaseAnalyticsLogEvent(
eventName: 'FATAL_ERROR',
parameters: {'key': 'value', 'key2': 'value'},
),
);
// 在日志记录器初始化和重新配置期间,我们可以限制每个策略允许记录的事件。
logger.reconfigure(
level: LogLevel.error, // 定义从哪个日志级别开始触发日志记录。
strategies: [
// 注册日志记录器将调用的日志策略。一些策略已经实现以方便使用。
ConsoleLogStrategy(supportedEvents: [
ConsoleLogEvent(eventName: 'Event-A'),
ConsoleLogEvent(eventName: 'Event-B')
]), // 日志记录器仅在控制台日志策略中触发 Event-A 或 Event-B。
FirebaseAnalyticsLogStrategy(supportedEvents: [
FirebaseAnalyticsLogEvent(eventName: 'Event-C'),
FirebaseAnalyticsLogEvent(eventName: 'Event-D')
]), // 日志记录器仅在 Firebase Analytics 日志策略中触发 Event-C 或 Event-D。
FirebaseCrashlyticsLogStrategy(supportedEvents: [
FirebaseCrashlyticsLogEvent(eventName: 'FATAL-ERROR-1'),
FirebaseCrashlyticsLogEvent(eventName: 'FATAL-ERROR-2')
]), // 日志记录器仅在 Firebase Crashlytics 日志策略中触发 FATAL-ERROR-1 或 FATAL-ERROR-2。
// 其他策略可以通过继承 LogStrategy 并在此处注册来实现。
],
);
}
希望这个示例能帮助你更好地理解和使用 Strategic Logger
。如果有任何问题或建议,请随时联系作者。
更多关于Flutter日志管理插件strategic_logger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复