Flutter日志记录插件proste_logger的使用
Flutter日志记录插件proste_logger的使用

proste_logger
一个简单易用的插件,用于打印长文本,并格式化Map或List数据结构。你还可以自定义打印区域的标题信息、文本颜色等。打印内容还会显示触发区域和触发方法。
使用
这是一个简单的使用logger的方法,你需要初始化一个ProsteLogger
,然后调用其内部方法来打印相关内容。
当然我们可以在初始化时进行一些配置信息,这将在后面详细说明。
final logger = ProsteLogger();
logger.i('this is info msg');
展示
简单文本

简单Map和List
重要提示:如果数据结构包含类数据结构,则打印的数据不会带有双引号。首先尝试使用jsonEncode()
进行格式化,如果失败则调用toString()
。

格式化的Map和List

长文本内容

包含在Map和List中的长文本

调用
final logger = ProsteLogger();
logger.d('this is debug msg'); // 仅在调试模式下打印,依赖于flutter内置的kDebugMode常量
logger.i('this is info msg', {title: 'self title', format: false}); // 打印方法也可以定义自己的标题信息或是否格式化数据
logger.w('this is warning msg');
logger.e('this is error msg');
初始化
final logger = ProsteLogger(
basic: const BasicConfig(
title: 'config', // 打印标题
limitLength: 100, // 单行长度限制
format: false, // 是否在数据为Map或List时进行格式化后打印
),
colors: const ColorConfig(
debug: Colors.white, // logger.d() 文本颜色
info: Colors.pink, // logger.i() 文本颜色
warning: Colors.green, // logger.w() 文本颜色
error: Colors.yellow, // logger.e() 文本颜色
),
);
如果你在使用过程中有任何建议或问题,欢迎在issues中提出,我会尽快处理。谢谢!
示例代码
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:proste_logger/proste_logger.dart';
class Demo {
Demo(this.title);
String title;
[@override](/user/override)
String toString() {
return 'title is $title';
}
}
void main() {
runApp(const Application());
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
const SystemUiOverlayStyle style = SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
);
SystemChrome.setSystemUIOverlayStyle(style);
}
class Application extends StatelessWidget {
const Application({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Proste_Logger'),
),
body: MyBody(),
),
);
}
}
class MyBody extends StatelessWidget {
MyBody({Key? key}) : super(key: key);
final logger = ProsteLogger();
final demoMap = {
'key': 'key',
'val': 'msg',
'cus': {'k': '123', 'd': Demo('555')},
};
final demoList = [
1,
2,
3,
4,
5,
'6',
'7',
[
99,
100,
{'key': 'k'},
Demo('1234'),
]
];
[@override](/user/override)
Widget build(BuildContext context) {
return Center(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
logger.i('this is info msg');
},
child: const Text('info'),
),
ElevatedButton(
onPressed: () {
logger.d('this is debug msg');
},
child: const Text('debug'),
),
ElevatedButton(
onPressed: () {
logger.w('this is warning msg');
},
child: const Text('warn'),
),
ElevatedButton(
onPressed: () {
logger.e('this is error msg');
},
child: const Text('error'),
),
ElevatedButton(
onPressed: () {
logger.d('custom title', title: 'custom');
},
child: const Text('custom title'),
),
ElevatedButton(
onPressed: () {
logger.i(
'this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,this is long text,',
);
},
child: const Text('long text'),
),
ElevatedButton(
onPressed: () {
logger.i('汉字内容', title: '汉字title');
},
child: const Text('中文汉字'),
),
ElevatedButton(
onPressed: () {
logger.i(demoList);
},
child: const Text('List'),
),
ElevatedButton(
onPressed: () {
logger.i(demoMap);
},
child: const Text('Map'),
),
ElevatedButton(
onPressed: () {
final map = {"k": 'key', 'v': 'val'};
final list = ['1', 2, 3, 4, '5'];
logger
..d(map)
..i(list);
},
child: const Text('simple Map and List'),
),
ElevatedButton(
onPressed: () {
const longText =
'longTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongTextlongText';
final map = {'k': 'key', 'v': 'val', 'text': longText};
final list = ['1', 2, 3, '4', longText];
logger
..d(map, format: true)
..i(list, format: true);
},
child: const Text('long text map and list'),
),
ElevatedButton(
onPressed: () {
logger.i(demoList, format: true);
},
child: const Text('format list'),
),
ElevatedButton(
onPressed: () {
logger.i(demoMap, format: true);
},
child: const Text('format map'),
),
ElevatedButton(
onPressed: () {
final privateLogger = ProsteLogger(
basic: const BasicConfig(
title: 'config',
limitLength: 100,
),
colors: const ColorConfig(
debug: Colors.white,
info: Colors.pink,
warning: Colors.green,
error: Colors.yellow,
),
);
privateLogger.d('this is debug log');
privateLogger.i('this is info log');
privateLogger.e('this is error log');
privateLogger.w('this is warning log');
},
child: const Text('custom config'),
),
],
),
),
);
}
}
更多关于Flutter日志记录插件proste_logger的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter日志记录插件proste_logger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用proste_logger
插件进行日志记录的代码示例。这个示例将展示如何配置和使用proste_logger
来记录不同级别的日志信息。
首先,你需要在你的pubspec.yaml
文件中添加proste_logger
依赖:
dependencies:
flutter:
sdk: flutter
proste_logger: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中配置和使用proste_logger
。以下是一个完整的示例,包括配置和日志记录:
import 'package:flutter/material.dart';
import 'package:proste_logger/proste_logger.dart';
void main() {
// 配置Logger
Logger.config = LoggerConfig(
level: LogLevel.verbose, // 设置日志级别
printToConsole: true, // 是否打印到控制台
logFile: "app_log.txt", // 日志文件名称
maxFileSize: 1024 * 1024, // 日志文件最大大小(字节)
backupCount: 3, // 保留的日志文件备份数量
);
// 初始化Logger
Logger.init();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context)child {:
Column (return
Material Appmain(Axis
Alignment :home Main:Axis SAlignmentcaffold.(center
,
app Barchildren:: App <BarWidget(
title: Text('Proste Logger Example'),
),
body: Center(
>[
ElevatedButton(
onPressed: () {
// 记录不同级别的日志
Logger.verbose("This is a verbose log.");
Logger.debug("This is a debug log.");
Logger.info("This is an info log.");
Logger.warn("This is a warning log.");
Logger.error("This is an error log.");
Logger.wtf("This is a wtf (What a Terrible Failure) log.");
},
child: Text('Log Messages'),
),
],
),
),
),
);
}
}
在这个示例中,我们首先配置了Logger
,包括设置日志级别、是否打印到控制台、日志文件名称、日志文件最大大小和保留的日志文件备份数量。然后,我们通过Logger.init()
方法初始化了Logger
。
在MyApp
的build
方法中,我们创建了一个简单的Flutter界面,其中包含一个按钮。当按钮被点击时,我们将记录不同级别的日志信息。
proste_logger
支持以下日志级别:
LogLevel.verbose
LogLevel.debug
LogLevel.info
LogLevel.warn
LogLevel.error
LogLevel.wtf
根据配置中的level
属性,低于该级别的日志将不会被记录。例如,如果我们将日志级别设置为LogLevel.error
,则只有error
和wtf
级别的日志会被记录。
这样,你就可以在你的Flutter项目中使用proste_logger
来记录和管理日志信息了。