登录python时,我使用:
(filepathname, line_number,
name, lines, index) = inspect.getframeinfo(sys._getframe(2))
code_info_str = ": {} - {} - {} : ".format(os.path.basename(filepathname), line_number, name)
Dart中有类似的东西吗? (谢谢)。
答案 0 :(得分:2)
import 'package:logging/logging.dart';
import 'package:meta/meta.dart';
import 'package:stack_trace/stack_trace.dart';
Logger log;
void initLogger({@required String package, String tag}) {
assert(package != null);
Logger.root.level = Level.ALL;
Logger.root.onRecord.listen((LogRecord rec) {
final List<Frame> frames = Trace.current().frames;
final Frame f = frames.skip(1).firstWhere((Frame f) => f.package == package, orElse: () => frames.first);
print('${rec.level.name}/${rec.loggerName}: ${f.member} (${f.library}:${f.line}): ${rec.message}');
});
log = Logger(tag?.toUpperCase() ?? package.toUpperCase());
}
initLogger(package: '<app>', tag: '<tag>');
// <app> is where you put the name of your app, like 'my_taxi_app'
// you need to put the right app name or it will not work
来自here。
您只需一次致电initLogger
,也许是在main.dart
中。
在要添加日志记录的每个源文件的顶部,添加
var log = Logger('my_specific_file_name');
,然后使用
log.info('something happened!');
答案 1 :(得分:1)
https://api.dartlang.org/stable/2.1.1/dart-core/StackTrace/current.html将允许获取信息,但是我认为您需要自己提取信息。我认为您的用例没有现成的软件包。
https://pub.dartlang.org/packages/stack_trace似乎使堆栈跟踪更易于使用,但我自己还没有使用此软件包。