Flutter日志记录插件proctologger的使用

Flutter日志记录插件proctologger的使用

欢迎来到Proctologger,这是一个帮助你在Flutter应用中进行深度调试的日志记录插件。我们保证,你的调试体验将会比去看医生还要愉快!

欢迎使用

展示一些爱心并给仓库点个星来支持我们的项目吧!

资源

开始使用

请按照以下步骤操作:

添加依赖

pubspec.yaml文件中添加以下依赖:

dependencies:
  proctologger: ^1.1.0
简单易用

创建一个Logger实例并开始记录日志:

import 'package:proctologger/proctologger.dart';

Logger logger = Logger();

logger.info("这是信息消息");

输出

日志输出

文档

选项

在创建Logger时,你可以传递一些选项:

Logger logger = Logger(
    parameters: const LoggerParameters(
        // 控制台宽度。
        maxLength: 54, 
        // 更改日期格式。
        dateFormat: "HH:mm:ss:SSS", 
        // 在控制台显示日志。
        showLog: true, 
        // 在控制台显示初始化消息。
        showInitMessage: true, 
        // 过滤日志类型。
        filterTypes: [], 
        // 过滤日志标签。
        filterTags: []
    )
);
日志类型

你可以调用以下日志类型:

logger.info("这是信息消息");

logger.warning("这是警告消息");

logger.error("这是错误消息");

logger.database("这是数据库消息");

logger.action("这是动作消息");

logger.debug("这是调试消息");
日志定制化

除了logger.debug()之外,所有日志都可以传递可选参数。例如,你可以调用logger.info()并传递可选参数:

logger.info(
  "这是信息消息",
  // 可选参数,你可以选择通道(app / security / request)。
  channel: LoggerChannelState.app,
  // 可选参数,你可以输入标签。
  tags: ["标签", "另一个标签"]
);

这将产生以下效果: 带标签的信息消息

当你调用logger.debug()时,你也可以传递可选参数。你可以直接调试StringintnumMapList和类对象。例如,我正在调试logger.parameters变量:

logger.debug(
  logger.parameters,
  // 可选参数,你可以选择通道(app / security / request)。
  channel: LoggerChannelState.app,
  // 可选参数,你可以选择一条消息。
  message: "调试变量 @parameters",
);

这将产生以下效果: 调试消息

过滤器

logger.parameters中的filterTypes决定哪些日志类型应该显示或不显示。默认情况下,所有日志都会显示。例如,我只想显示infodebug日志:

Logger logger = Logger(
    parameters: const LoggerParameters(
        filterTypes: [LoggerTypeState.info, LoggerTypeState.debug], 
    )
);

logger.parameters中的filterTags决定哪些日志标签应该显示或不显示。默认情况下,所有日志都会显示。你可以结合此参数与filterTypes以实现更精确的过滤。例如,我只想显示具有以下标签的日志:

Logger logger = Logger(
    parameters: const LoggerParameters(
        filterTags: ["我想要的标签"], 
    )
);

许可证

该项目受MIT许可证保护,详情请参阅文件LICENSE.md

完整示例Demo

以下是完整的示例代码,展示了如何使用proctologger插件:

import 'package:proctologger/logic/states/state_channel.dart';
import 'package:proctologger/proctologger.dart';

// 你可以使用一个辅助函数在整个应用程序中仅初始化一次日志记录器,并应用日志记录器的参数。
class LoggerHelper {
  static final LoggerHelper _singleton = LoggerHelper._internal();
  final Logger logger = Logger(); // 这里,你可以应用自定义参数。

  factory LoggerHelper() {
    return _singleton;
  }

  LoggerHelper._internal();
}

void main() {
  demo();
}

void demo() {
  LoggerHelper().logger.info(
    "这是信息消息",
  );
  LoggerHelper().logger.info(
    "这里是一个非常长的信息消息,用于演示多行处理和标签",
  );
  LoggerHelper().logger.warning(
    "这是警告消息",
  );
  LoggerHelper().logger.action(
    "这是动作消息",
  );
  LoggerHelper().logger.database(
    "这是数据库消息",
  );
  LoggerHelper().logger.error(
    "这是错误消息",
  );
  LoggerHelper().logger.debug("这是要调试的变量");
  LoggerHelper().logger.info(
    "这是信息消息",
    channel: LoggerChannelState.app,
    tags: ["标签", "另一个标签"]
  );
  LoggerHelper().logger.debug(
    LoggerHelper().logger.parameters,
    channel: LoggerChannelState.app,
    message: "调试变量 @parameters",
  );
}

更多关于Flutter日志记录插件proctologger的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter日志记录插件proctologger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用proctologger插件进行日志记录的代码示例。proctologger是一个用于Flutter的日志记录库,尽管它不是一个广为人知的库(可能是一个虚构或特定团队的库,因为标准Flutter生态系统中并没有广泛使用的名为proctologger的插件),但我会根据通常的日志记录插件的使用方式来展示一个类似的实现。

假设proctologger提供了基本的日志级别(如info, debug, warning, error)和日志输出功能,以下是如何在你的Flutter项目中使用它的一个示例:

  1. 添加依赖(假设proctologger存在于某个pub仓库中,这里以example_logger代替,因为实际的proctologger可能不存在):

在你的pubspec.yaml文件中添加依赖:

dependencies:
  flutter:
    sdk: flutter
  example_logger: ^1.0.0  # 假设的版本号

然后运行flutter pub get来获取依赖。

  1. 初始化并使用日志记录器

创建一个新的Dart文件,比如logger_service.dart,来封装日志记录逻辑:

import 'package:flutter/material.dart';
import 'package:example_logger/example_logger.dart';  // 假设的导入路径

class LoggerService {
  static final LoggerService _instance = LoggerService._internal();

  factory LoggerService() => _instance;

  LoggerService._internal() {
    // 初始化日志记录器,这里假设example_logger有一个全局的初始化方法
    Logger.initialize(
      level: LogLevel.verbose, // 设置日志级别
      // 其他可能的配置,如输出格式、文件存储路径等
    );
  }

  void info(String message) {
    Logger.i(message);
  }

  void debug(String message) {
    Logger.d(message);
  }

  void warning(String message) {
    Logger.w(message);
  }

  void error(String message, {Object? error, StackTrace? stackTrace}) {
    Logger.e(message, error: error, stackTrace: stackTrace);
  }
}
  1. 在应用程序中使用日志记录器

在你的主应用程序文件(如main.dart)中使用这个日志记录服务:

import 'package:flutter/material.dart';
import 'logger_service.dart';

void main() {
  LoggerService().info('Application started');
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
    LoggerService().debug('Home page initialized');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Logger Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            try {
              throw Exception('This is a test error');
            } catch (e, s) {
              LoggerService().error('An error occurred', error: e, stackTrace: s);
            }
            LoggerService().warning('This is a warning message');
          },
          child: Text('Log Messages'),
        ),
      ),
    );
  }
}

注意:上述代码示例是基于假设的example_logger库的使用方式。如果proctologger确实存在并且有不同的API,你需要参考其官方文档来调整代码。通常,日志记录插件会提供类似的初始化、配置和日志级别方法。如果proctologger是一个私有或特定团队的库,你可能需要联系库的维护者获取更详细的使用指南和API文档。

回到顶部