Flutter日志管理插件nd_logs的使用
Flutter日志管理插件nd_logs的使用
nd_logs
是一个为 Flutter/Dart 应用程序构建的日志解决方案,完全用 Dart 编写。
注意:目前该插件仅在 Android 和 iOS 平台上进行了测试。基本的 Web 支持也已添加。但是,由于 Web 应用无法像原生应用一样访问文件系统,因此 Web 平台的日志记录是会话级别的,并且只有在调用导出方法时才会保存到下载目录。
开始使用
首先,确保在应用程序启动时初始化 WidgetsFlutterBinding
并调用 NDLogs.setupLogger()
方法:
WidgetsFlutterBinding.ensureInitialized();
await NDLogs.setupLogger();
接下来,可以通过简单的调用向日志中添加记录:
NDLogs.logThis("My first log!");
要导出日志文件,可以使用以下代码:
final logFilePath = await NDLogs.exportLogFile();
如果需要清除日志,可以调用以下方法:
await NDLogs.clearLogs();
完整示例代码
以下是完整的示例代码,展示了如何使用 nd_logs
插件记录日志并导出日志文件。
import 'dart:async';
import 'dart:developer';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:nd_logs/base/log_types.dart';
import 'package:nd_logs/nd_logs.dart';
void main() async {
// 初始化 Flutter 绑定并设置日志记录器
WidgetsFlutterBinding.ensureInitialized();
await NDLogs.setupLogger(recordHTML: true);
// 使用 runZonedGuarded 捕获未处理异常并记录错误
runZonedGuarded(
() => runApp(const MyApp()),
(error, stack) async {
await NDLogs.logErrorWithStacktrace(
error,
stack,
paramsTracking: {
"name": "Andi",
"counter": "Unable to comply",
},
);
},
);
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
// 记录日志并附加参数
NDLogs.logThis(
"Counter value = $_counter",
paramsTracking: {
"name": "Andi",
"counter": _counter.toString(),
},
);
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
actions: [
// 导出日志按钮
IconButton(
icon: const Icon(Icons.import_export),
onPressed: () => _exportLogs(),
),
],
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('You have pushed the button this many times:'),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
Future<void> _exportLogs() async {
// 记录导出日志的操作
await NDLogs.logThis(
"Exporting Logs",
logType: LogType.warning,
);
// 导出日志文件路径
final path = await NDLogs.exportLogFile();
// 打印日志文件路径
debugPrint("File found at $path");
// 读取并打印日志文件内容
final content = await File(path).readAsString();
log(content);
// 清除所有日志
await NDLogs.clearLogs();
}
}
更多关于Flutter日志管理插件nd_logs的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter日志管理插件nd_logs的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
nd_logs
是一个用于 Flutter 应用的日志管理插件,它可以帮助开发者更好地管理和记录应用中的日志信息。以下是 nd_logs
的基本使用步骤和示例代码。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 nd_logs
插件的依赖。
dependencies:
flutter:
sdk: flutter
nd_logs: ^1.0.0 # 请使用最新版本
然后,运行 flutter pub get
来获取依赖。
2. 初始化日志管理器
在你的 Flutter 应用中,通常需要在 main.dart
文件中初始化 nd_logs
日志管理器。
import 'package:flutter/material.dart';
import 'package:nd_logs/nd_logs.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 初始化日志管理器
NdLogs.initialize(
logLevel: LogLevel.debug, // 设置日志级别
logToConsole: true, // 是否输出到控制台
logToFile: true, // 是否输出到文件
logDirectory: 'logs', // 日志文件存放目录
);
runApp(MyApp());
}
3. 记录日志
在你的应用代码中,你可以使用 NdLogs
来记录不同级别的日志信息。
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('ND Logs Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 记录不同级别的日志
NdLogs.debug('This is a debug message');
NdLogs.info('This is an info message');
NdLogs.warning('This is a warning message');
NdLogs.error('This is an error message');
},
child: Text('Log Messages'),
),
),
),
);
}
}
4. 查看日志
如果启用了 logToFile
,日志将被保存到指定的目录中。你可以通过文件系统查看这些日志文件。
5. 日志级别
nd_logs
支持多种日志级别,包括:
LogLevel.debug
: 调试信息LogLevel.info
: 常规信息LogLevel.warning
: 警告信息LogLevel.error
: 错误信息
你可以通过 NdLogs.initialize
方法设置日志级别,只有高于或等于该级别的日志才会被记录。
6. 自定义日志格式
nd_logs
允许你自定义日志的格式。你可以在初始化时通过 logFormatter
参数来指定自定义的日志格式。
NdLogs.initialize(
logLevel: LogLevel.debug,
logToConsole: true,
logToFile: true,
logDirectory: 'logs',
logFormatter: (level, message) {
return '${DateTime.now()} [$level] $message';
},
);
7. 日志文件管理
你可以通过 NdLogs
提供的方法来管理日志文件,例如删除旧的日志文件或清空日志目录。
// 删除所有日志文件
NdLogs.clearLogs();
// 删除超过指定天数的日志文件
NdLogs.deleteOldLogs(days: 7);
8. 日志上传
nd_logs
还支持将日志文件上传到服务器。你可以使用 NdLogs.uploadLogs
方法来实现日志上传。
NdLogs.uploadLogs(
url: 'https://your-server.com/upload-logs',
headers: {'Authorization': 'Bearer your-token'},
);