Flutter日志记录插件ts_logger的使用

Flutter日志记录插件ts_logger的使用

ts_logger 是一个设计用来帮助开发者轻松调试代码和API请求的日志记录插件。它确保在任何环境中安全使用(所有功能仅在 kDebugMode == true 时工作)。

特性

  • 记录API客户端请求和响应。
  • 控制台输出彩色消息。
  • 使用不同的日志级别记录消息到控制台。
  • 记录带有级别和堆栈跟踪的FlutterError到控制台。

配置

配置设置

TsLogger.instance.configure((
  messageLoggerConfig,
  apiLoggerConfig,
) {
    // MessageLoggerConfig配置
    messageLoggerConfig.logLevels = LogLevel.values.toList();
    messageLoggerConfig.colorizeLogs = false;
    
    // ApiLoggerConfig配置
    apiLoggerConfig.logRequestBody = true;
    apiLoggerConfig.logRequestQueryParams = true;
    apiLoggerConfig.logRequestHeaders = true;
    apiLoggerConfig.ignoreRequestHeaders = ['Authorization'];
    apiLoggerConfig.reportInterval = null;
});

MessageLoggerConfig属性

属性 描述 默认值
logLevels 只显示指定级别的日志,有助于过滤特定类型的错误等。 LogLevel.values (全部)
colorizeLogs 是否颜色化日志信息。 true
logMessageTime 是否显示消息被记录的时间。 true

ApiLoggerConfig属性

属性 描述 默认值
_maxResponseBodyLengthForPrint 打印到控制台的最大响应体长度。 1500
logRequestQueryParams 是否显示查询参数。 true
logRequestHeaders 是否显示请求头。 false
ignoreRequestHeaders 忽略显示的请求头列表。 ['Authorization']

使用方法

API请求和响应日志记录

通过activateGetConnectLoggeractivateDioLogger激活对不同HTTP客户端的支持。

final getConnectClient = g.GetConnect();
TsLogger.instance.activateGetConnectLogger(getConnectClient.httpClient);
getConnectClient.get('https://jsonplaceholder.typicode.com/users');

final dioClient = d.Dio();
TsLogger.instance.activateDioLogger(dioClient);
dioClient.get('https://jsonplaceholder.typicode.com/users');

消息日志记录

支持多种日志级别记录消息:

TsLogger.instance.logColorizedMessage(
  message: 'This is colorized message for testing purposes.',
  color: Colors.cyan,
);
for (final level in LogLevel.values) {
  TsLogger.instance.logMessage(
    'This is dummy message for testing purposes.',
    level: level,
  );
}

FlutterError日志记录

捕获并记录FlutterError:

FlutterError.onError = (details) {
  TsLogger.instance.onFlutterError(details);
};

示例Demo

下面是一个完整的示例程序,演示如何使用ts_logger插件进行日志记录:

import 'package:flutter/material.dart';
import 'package:dio/dio.dart' as d;
import 'package:get/get.dart' as g;
import 'package:ts_logger/ts_logger.dart';

void main() async {
  TsLogger.instance.configure((
    messageLoggerConfig,
    apiLoggerConfig,
  ) {
    messageLoggerConfig.logLevels = LogLevel.values.toList();
    messageLoggerConfig.colorizeLogs = false;

    apiLoggerConfig.logRequestBody = true;
    apiLoggerConfig.logRequestQueryParams = true;
    apiLoggerConfig.logRequestHeaders = true;
    apiLoggerConfig.ignoreRequestHeaders = ['Authorization'];
    apiLoggerConfig.reportInterval = null;
  });

  FlutterError.onError = (details) {
    TsLogger.instance.onFlutterError(details);
  };

  TsLogger.instance.logColorizedMessage(
    message: 'This is colorized message for testing purposes.',
    color: Colors.cyan,
  );

  for (final level in LogLevel.values) {
    TsLogger.instance.logMessage(
      'This is dummy message for testing purposes.',
      level: level,
    );
  }

  final getConnectClient = g.GetConnect();
  final dioClient = d.Dio();

  TsLogger.instance.activateGetConnectLogger(getConnectClient.httpClient);
  TsLogger.instance.activateDioLogger(dioClient);

  await getConnectClient.get(
    'https://jsonplaceholder.typicode.com/comments?postId=2',
    headers: {
      'content-type': 'application/json',
      'token': 'test',
    },
  );

  await getConnectClient.get(
    'https://jsonplaceholder.typicode.com/comments?postId=1',
    headers: {
      'Authorization': 'Bearer testToken',
    },
  );

  for (int i = 0; i < 5; i++) {
    dioClient.get(
      'https://jsonplaceholder.typicode.com/posts/1',
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用ts_logger插件进行日志记录的示例代码。ts_logger是一个强大的日志记录库,它可以帮助你在Flutter应用中轻松地记录和管理日志。

1. 添加依赖

首先,你需要在你的pubspec.yaml文件中添加ts_logger的依赖:

dependencies:
  flutter:
    sdk: flutter
  ts_logger: ^x.y.z  # 请替换为最新的版本号

然后运行flutter pub get来安装依赖。

2. 配置Logger

在你的应用的主入口文件(通常是main.dart)中,配置ts_logger

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

void main() {
  // 配置Logger
  configureLogger();
  runApp(MyApp());
}

void configureLogger() {
  // 创建一个Logger实例
  final logger = Logger(
    printer: MultiLinePrinter(
      output: PrintOutput(), // 输出到控制台
      // 你可以添加其他输出,比如文件输出
      // FileOutput('./logs/app.log'),
    ),
    level: LogLevel.verbose, // 设置日志级别
  );

  // 将Logger实例设置为全局Logger
  Logger.global = logger;
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Logger Example'),
        ),
        body: Center(
          child: MyHomePage(),
        ),
      ),
    );
  }
}

3. 使用Logger记录日志

在你的应用中的任何地方,你都可以使用Logger.global来记录日志。

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        ElevatedButton(
          onPressed: () {
            Logger.global.v('This is a verbose log message.');
            Logger.global.d('This is a debug log message.');
            Logger.global.i('This is an info log message.');
            Logger.global.w('This is a warning log message.');
            Logger.global.e('This is an error log message.');
          },
          child: Text('Log Messages'),
        ),
      ],
    );
  }
}

4. 运行应用

现在,当你运行你的Flutter应用并点击按钮时,你应该能够在控制台中看到不同级别的日志输出。

5. 自定义日志格式(可选)

如果你需要自定义日志格式,你可以通过实现自定义的Printer类来实现。例如:

class CustomPrinter extends Printer {
  @override
  void print(LogRecord record) {
    // 自定义日志格式
    print('[${record.level.name}] ${record.time} - ${record.message}');
  }
}

然后在配置Logger时使用这个自定义的Printer:

void configureLogger() {
  final logger = Logger(
    printer: CustomPrinter(),
    level: LogLevel.verbose,
  );
  Logger.global = logger;
}

这样,你就可以根据自己的需求来自定义日志格式了。

通过上述步骤,你就可以在Flutter项目中使用ts_logger插件进行日志记录了。希望这个示例对你有所帮助!

回到顶部