flutter如何打印日志

在Flutter开发中,如何正确打印日志信息?我尝试用print()函数,但发现在Release模式下会被自动移除。有没有更可靠的日志输出方式?比如像Android的Log类或iOS的NSLog那样的专用日志工具?最好能支持不同日志级别(debug/info/warning/error)和日志过滤功能。

2 回复

在Flutter中,使用print()函数即可打印日志。例如:

print('这是日志信息');

日志会在控制台或调试终端显示。

更多关于flutter如何打印日志的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,可以通过以下几种方式打印日志:

1. 使用 print() 函数(最简单)

print('这是一条普通日志');

2. 使用 logger 包(推荐)

首先添加依赖:

dependencies:
  logger: ^1.1.0

使用示例:

import 'package:logger/logger.dart';

var logger = Logger();

// 不同级别的日志
logger.v('Verbose 日志');
logger.d('Debug 日志');
logger.i('Info 日志');
logger.w('Warning 日志');
logger.e('Error 日志', error: '错误信息');
logger.wtf('What a Terrible Failure 日志');

// 自定义格式
var logger = Logger(
  printer: PrettyPrinter(
    methodCount: 0, // 不显示方法调用堆栈
    errorMethodCount: 8, // 错误时显示8层堆栈
    lineLength: 120,
    colors: true,
    printEmojis: true,
    printTime: false,
  ),
);

3. 开发环境专用日志

void debugPrint(String message) {
  assert(() {
    print('🐛 DEBUG: $message');
    return true;
  }());
}

// 使用
debugPrint('这条日志只在开发环境显示');

4. 条件编译日志

class AppLogger {
  static void log(String message) {
    // 只在调试模式打印
    if (kDebugMode) {
      print('🔄 $message');
    }
  }
  
  static void error(String message, [dynamic error]) {
    if (kDebugMode) {
      print('❌ ERROR: $message ${error ?? ''}');
    }
  }
}

// 使用
AppLogger.log('应用启动');
AppLogger.error('网络请求失败', e.toString());

推荐做法:

  • 开发阶段:使用 logger 包,便于查看不同级别的日志
  • 生产环境:使用条件编译,避免不必要的日志输出
  • 重要信息:使用 debugPrint 确保在 release 模式不输出

logger 包提供了更好的格式化和过滤功能,是 Flutter 开发中最常用的日志工具。

回到顶部