logger.dart 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import 'dart:io';
  2. import 'package:naiyouwl/app/utils/event.dart';
  3. class Logger {
  4. final Map<String, int> _timeMap = {};
  5. final Event _event = Event();
  6. _join([Object? text1, Object? text2, Object? text3, Object? text4, Object? text5, Object? text6, Object? text7, Object? text8]) {
  7. return [text1, text2, text3, text4, text5, text6, text7, text8].whereType<Object>().join(' ');
  8. }
  9. log(Object text, {String level = 'info'}) {
  10. String log = 'time="${DateTime.now().toString()}" level=$level msg="$text"';
  11. stdout.writeln(log);
  12. _event.emit('log', log);
  13. }
  14. info(Object? text, [Object? text2, Object? text3, Object? text4, Object? text5, Object? text6, Object? text7, Object? text8]) {
  15. log(_join(text, text2, text3, text4, text5, text6, text7, text8), level: 'info');
  16. }
  17. warning(Object? text, [Object? text2, Object? text3, Object? text4, Object? text5, Object? text6, Object? text7, Object? text8]) {
  18. log(_join(text, text2, text3, text4, text5, text6, text7, text8), level: 'warning');
  19. }
  20. error(Object? text, [Object? text2, Object? text3, Object? text4, Object? text5, Object? text6, Object? text7, Object? text8]) {
  21. log(_join(text, text2, text3, text4, text5, text6, text7, text8), level: 'error');
  22. }
  23. debug(Object? text, [Object? text2, Object? text3, Object? text4, Object? text5, Object? text6, Object? text7, Object? text8]) {
  24. log(_join(text, text2, text3, text4, text5, text6, text7, text8), level: 'debug');
  25. }
  26. time(String text) {
  27. _timeMap[text] = DateTime.now().microsecondsSinceEpoch;
  28. }
  29. timeEnd(String text) {
  30. final startTime = _timeMap[text];
  31. if (startTime == null) return warning("Timer '$text' does not exist");
  32. int now = DateTime.now().microsecondsSinceEpoch;
  33. _timeMap.remove(text);
  34. debug('$text: ${(now - startTime) / 1000} ms');
  35. }
  36. on({void Function(String event)? onLog}) {
  37. if (onLog != null) _event.on('log', onLog);
  38. }
  39. off({void Function(String event)? onLog}) {
  40. if (onLog != null) _event.off('log', onLog);
  41. }
  42. }
  43. Logger log = Logger();