Line data Source code
1 : import 'package:logging/logging.dart';
2 : import 'package:the_logger/src/models/models.dart';
3 :
4 : /// Db-related extension for Level
5 : extension WritableLevel on Level {
6 : /// Return Level by value
7 1 : static Level fromValue(int value) {
8 4 : return Level.LEVELS.firstWhere((element) => element.value == value);
9 : }
10 : }
11 :
12 : /// Db-related extension for LogRecord
13 : extension WritableLogRecord on MaskedLogRecord {
14 : static const _keySessionId = 'session_id';
15 : static const _keyLevel = 'level';
16 : static const _keyMessage = 'message';
17 : static const _keyLoggerName = 'logger_name';
18 : static const _keyError = 'error';
19 : static const _keyStackTrace = 'stack_trace';
20 : static const _keyTime = 'time';
21 :
22 : /// Prepare structure for writing to db
23 3 : Map<String, dynamic> toMap({
24 : required int sessionId,
25 : required bool mask,
26 : }) {
27 3 : return {
28 : _keySessionId: sessionId,
29 6 : _keyLevel: level.value,
30 5 : _keyMessage: mask ? maskedMessage : message,
31 3 : _keyLoggerName: loggerName,
32 6 : _keyError: mask ? maskedError : error?.toString(),
33 7 : _keyStackTrace: mask ? maskedStackTrace : stackTrace.toString(),
34 6 : _keyTime: time.microsecondsSinceEpoch,
35 : };
36 : }
37 :
38 : /// Create LogRecord from db record
39 1 : static MaskedLogRecord fromMap(
40 : Map<String, dynamic> map, {
41 : MaskingStrings maskingStrings = const {},
42 : }) {
43 1 : return MaskedLogRecord.fromLogRecordFields(
44 2 : WritableLevel.fromValue(map[_keyLevel] as int),
45 1 : map[_keyMessage] as String,
46 1 : map[_keyLoggerName] as String,
47 1 : map[_keyError] as String,
48 2 : StackTrace.fromString(map[_keyStackTrace] as String),
49 : null,
50 : null,
51 : maskingStrings: maskingStrings,
52 : );
53 : }
54 : }
|