Flutter日志记录插件mini_logger的使用
Flutter日志记录插件mini_logger的使用
mini_log
是一个用于Flutter应用的日志记录插件。通过该插件,开发者可以方便地记录不同级别的日志,并将这些日志存储在本地数据库中。
开始使用
安装插件
首先,在你的pubspec.yaml
文件中添加对mini_logger
插件的依赖:
dependencies:
mini_logger: ^版本号
然后运行flutter pub get
以安装插件。
初始化插件
在应用启动时初始化插件。你可以通过调用L.init()
方法来配置插件,指定标签名、是否使用SQLite存储以及日志级别等参数。
void main() {
L.init(MiniLoggerConfig(
tag: 'mini_logger_example',
withSQLite: true,
upLogEvent: upLog,
minSQLiteLevel: MiniLoggerLevelEnum.V,
));
runApp(MyApp());
}
示例代码
下面是一个完整的示例代码,展示了如何使用mini_logger
插件进行日志记录和查询。
import 'dart:async';
import 'dart:math' as math;
import 'package:flutter/material.dart';
import 'package:mini_logger/mini_logger.dart';
import 'package:english_words/english_words.dart';
void main() {
L.init(MiniLoggerConfig(
tag: 'mini_logger_example',
withSQLite: true,
upLogEvent: upLog,
minSQLiteLevel: MiniLoggerLevelEnum.V,
));
runApp(MyApp());
}
Future<bool> upLog(MiniLoggerModel log) async {
L.d("正在提交日志:$log", withSQLite: false, withUp: false, tag: '上传日志');
return true;
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: '日志测试'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
TextEditingController _controller = TextEditingController();
QueryLogParameter _parameter = QueryLogParameter();
List<MiniLoggerModel> _list = [];
int _counter = 0;
[@override](/user/override)
void initState() {
_query();
_controller.addListener(() {
_parameter.searchKey = _controller.text.trim();
_query();
});
super.initState();
}
void _add() async {
int index = (_counter++) % 5;
var log =
generateWordPairs().take(math.Random().nextInt(50) + 20).join(' ');
switch (index) {
case 0:
L.v(log); // 记录一条详细的日志
break;
case 1:
L.d(log, withUp: math.Random().nextBool()); // 记录一条调试日志,并根据随机值决定是否上报
break;
case 2:
L.i(log, withSQLite: math.Random().nextBool()); // 记录一条信息日志,并根据随机值决定是否存储到SQLite
break;
case 3:
L.w(log, withUp: false); // 记录一条警告日志,并不上报
break;
case 4:
L.e(log, withSQLite: true); // 记录一条错误日志,并存储到SQLite
break;
}
_query();
}
void _delete() async {
int sum = await L.deleteLog(QueryLogParameter(maxTime: DateTime.now()));
print('删除了$sum条记录');
_query();
}
void _query() async {
_list = await L.queryLogs(_parameter);
if (mounted) setState(() {});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Card(
child: Padding(
padding: const EdgeInsets.only(left: 8),
child: TextField(
controller: _controller,
decoration: InputDecoration(
contentPadding: EdgeInsets.only(top: 0.0),
hintText: '日志测试',
border: InputBorder.none,
),
),
),
),
centerTitle: true,
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: ListView.builder(
itemBuilder: (ctx, index) {
if (index.isOdd) return Divider();
MiniLoggerModel _log = _list[(index / 2).floor()];
return Text(_log.toString(), style: TextStyle(color: _log.level.color));
},
itemCount: _list.length * 2,
),
),
floatingActionButton: Column(
mainAxisSize: MainAxisSize.min,
children: [
FloatingActionButton(
onPressed: _delete,
tooltip: 'delete',
child: Icon(Icons.delete),
backgroundColor: Colors.red,
),
SizedBox(height: 20),
FloatingActionButton(
onPressed: _add, tooltip: 'add', child: Icon(Icons.add))
],
),
);
}
String getDateTimeStr(DateTime time) {
return "${time.month.toString().padLeft(2, '0')}-${time.day.toString().padLeft(2, '0')} ${time.hour.toString().padLeft(2, '0')}:${time.minute.toString().padLeft(2, '0')}:${time.second.toString().padLeft(2, '0')}";
}
}
更多关于Flutter日志记录插件mini_logger的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter日志记录插件mini_logger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
mini_logger
是一个轻量级的 Flutter 日志记录插件,它可以帮助你在 Flutter 应用中轻松地记录和管理日志。以下是如何使用 mini_logger
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 mini_logger
依赖:
dependencies:
flutter:
sdk: flutter
mini_logger: ^1.0.0 # 请检查最新的版本号
然后运行 flutter pub get
来获取依赖。
2. 初始化日志记录器
在你的 Dart 文件中导入 mini_logger
包,并初始化日志记录器:
import 'package:mini_logger/mini_logger.dart';
void main() {
// 初始化日志记录器
MiniLogger.initialize(
logLevel: LogLevel.debug, // 设置日志级别
enableFileLogging: true, // 是否启用文件日志记录
logDirectory: 'logs', // 日志文件存储目录
);
runApp(MyApp());
}
3. 记录日志
你可以使用 MiniLogger
提供的不同方法来记录不同级别的日志:
MiniLogger.debug('This is a debug message');
MiniLogger.info('This is an info message');
MiniLogger.warning('This is a warning message');
MiniLogger.error('This is an error message');
4. 日志级别
mini_logger
支持以下日志级别:
LogLevel.debug
: 调试信息,通常用于开发阶段。LogLevel.info
: 一般信息,用于记录应用的正常运行状态。LogLevel.warning
: 警告信息,表示可能存在问题,但不会导致应用崩溃。LogLevel.error
: 错误信息,表示发生了错误,可能会影响应用的正常运行。
5. 文件日志记录
如果你启用了文件日志记录 (enableFileLogging: true
),日志将被写入到指定的目录中。你可以通过 logDirectory
参数指定日志文件的存储目录。
6. 查看日志
你可以在应用的存储目录中查看生成的日志文件。日志文件通常以日期命名,例如 2023-10-01.log
。
7. 自定义日志格式
mini_logger
允许你自定义日志的格式。你可以通过 MiniLogger.initialize
方法中的 formatter
参数来指定自定义的日志格式。
MiniLogger.initialize(
logLevel: LogLevel.debug,
formatter: (LogLevel level, String message) {
return '[${DateTime.now()}] [$level] $message';
},
);
8. 禁用日志记录
在发布版本中,你可能希望禁用日志记录以保护用户隐私或提高性能。你可以通过设置 logLevel
为 LogLevel.none
来禁用日志记录:
MiniLogger.initialize(
logLevel: LogLevel.none,
);
9. 清理日志文件
mini_logger
还提供了清理日志文件的功能。你可以通过 MiniLogger.cleanLogs
方法来删除旧的日志文件:
MiniLogger.cleanLogs(days: 7); // 删除7天前的日志文件