我想发布我的 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());
}
虽然没有直接的方法可以实现此目的,但您可以执行以下操作:
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!");
我想发布我的 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;
}
}
有趣的是,其中提到:
即使在发布模式下,这也会显示所有日志。 (不是一个好主意)
根据您正在寻找的内容,这正是您想要避免的!