我想在我的应用中使用Logger库。我只想示例化它一次,这样我的应用中就有一致的格式。我还想避免示例化PrettyPrinter()多次:
PrettyPrinter()
// Where should I put this ? var logger = Logger( printer: PrettyPrinter( methodCount: 2, colors: true, ), );
做这件事的正确方法是什么?我应该只使用全局常量吗?有没有办法用单例来做这件事?
bis0qfac1#
我定义了一个helper函数来获取Logger:
import 'package:logger/logger.dart'; import 'log_printer.dart'; Logger getLogger(String className) { return Logger(printer: SimpleLogPrinter(className)); }
然后在每个类中,我希望以日志为例:
class ProfileService with ChangeNotifier { static final _log = getLogger('ProfileService'); Future<Profile> updateProfile(Profile profile) async { _log.v('updateProfile'); ... } ... }
另一个例子:
class AuthScreen extends StatelessWidget { final log = getLogger('AuthScreen'); @override Widget build(BuildContext context) { log.v('build called'); ... } ... }
4ioopgfo2#
我更喜欢使用单例。这在Flutter中并不常见,但是在这个场景中选择它是非常有意义的。日志记录器必须在任何地方都可以访问,而不需要任何上下文。并且可以让它保持活动状态,直到应用程序生命周期结束。我的建议是创建一个包含以下内容的文件log.dart:
log.dart
import 'package:logger/logger.dart'; Logger get logger => Log.instance; class Log extends Logger { Log._() : super(printer: PrettyPrinter(printTime: true)); static final instance = Log._(); }
然后,您可以在任何地方访问您的记录器:
logger.d('My debug message');
2条答案
按热度按时间bis0qfac1#
我定义了一个helper函数来获取Logger:
然后在每个类中,我希望以日志为例:
另一个例子:
4ioopgfo2#
我更喜欢使用单例。
这在Flutter中并不常见,但是在这个场景中选择它是非常有意义的。日志记录器必须在任何地方都可以访问,而不需要任何上下文。并且可以让它保持活动状态,直到应用程序生命周期结束。
我的建议是创建一个包含以下内容的文件
log.dart
:然后,您可以在任何地方访问您的记录器: