如何使用“Logger”Dart 包禁用所有 Flutter 应用程序日志?

问题描述 投票:0回答:2

我想发布我的 Flutter 应用程序,并且我想找到一种方法来禁用我的应用程序中的所有日志

late Logger logger;

void main() async {
  WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
  FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
  await initializeDependencies();
  logger = Logger(
      printer: PrettyPrinter(
          methodCount: 0,
          errorMethodCount: 0,
          lineLength: 150,
          colors: true,
          printEmojis: true));
  runApp(const MyApp());
}

flutter dart logging dart-pub
2个回答
0
投票

虽然没有直接的方法可以实现此目的,但您可以执行以下操作:

 Logger? logger; // <== Make Logger nullable

void main() async {
  WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
  FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
  await initializeDependencies();
 // logger = Logger(
 //   printer: PrettyPrinter(
 //      methodCount: 0,
 //      errorMethodCount: 0,
 //      lineLength: 150,
 //      colors: true,
 //      printEmojis: true));
  runApp(const MyApp());
}

日志语句知道看起来像:-

logger?.d("Logger is working!");

0
投票

我想发布我的 Flutter 应用程序并且我想找到一种方法来禁用 我的应用程序中的所有日志

您似乎想在 release 模式下禁用日志。这种情况你就不用担心了。

filter
 的默认 
Logger
在调试模式下表现为 only 日志记录。引用文档

var logger = Logger(
  filter: null, // Use the default LogFilter (-> only log in debug mode)
  printer: PrettyPrinter(), // Use the PrettyPrinter to format and print log
  output: null, // Use the default LogOutput (-> send everything to console)
);

filter
参数的默认值为
DevelopmentFilter
,这意味着:

在发布模式下,所有日志都会被忽略。


但是,您可以创建自定义过滤器(无论出于何种原因,例如根据日志级别隐藏日志)。引用文档:

class MyFilter extends LogFilter {
  @override
  bool shouldLog(LogEvent event) {
    return true;
  }
}

有趣的是,其中提到:

即使在发布模式下,这也会显示所有日志。 (不是一个好主意)

根据您正在寻找的内容,这正是您想要避免的!

© www.soinside.com 2019 - 2024. All rights reserved.