mirror of
https://github.com/immich-app/immich.git
synced 2025-05-31 12:15:47 -04:00
chore(mobile): rename log enum to lowercase (#16476)
* chore(mobile): rename log enum to lowercase * chore(mobile): do not abbreviate --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
parent
6cc1978b2d
commit
d8d87bb565
@ -1,19 +1,15 @@
|
|||||||
// ignore_for_file: constant_identifier_names
|
|
||||||
|
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
|
|
||||||
/// Log levels according to dart logging [Level]
|
/// Log levels according to dart logging [Level]
|
||||||
enum LogLevel {
|
enum LogLevel {
|
||||||
ALL,
|
all,
|
||||||
FINEST,
|
finest,
|
||||||
FINER,
|
finer,
|
||||||
FINE,
|
fine,
|
||||||
CONFIG,
|
config,
|
||||||
INFO,
|
info,
|
||||||
WARNING,
|
warning,
|
||||||
SEVERE,
|
severe,
|
||||||
SHOUT,
|
shout,
|
||||||
OFF,
|
off,
|
||||||
}
|
}
|
||||||
|
|
||||||
class LogMessage {
|
class LogMessage {
|
||||||
|
@ -39,29 +39,29 @@ class LogService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static Future<LogService> init({
|
static Future<LogService> init({
|
||||||
required ILogRepository logRepo,
|
required ILogRepository logRepository,
|
||||||
required IStoreRepository storeRepo,
|
required IStoreRepository storeRepository,
|
||||||
bool shouldBuffer = true,
|
bool shouldBuffer = true,
|
||||||
}) async {
|
}) async {
|
||||||
if (_instance != null) {
|
if (_instance != null) {
|
||||||
return _instance!;
|
return _instance!;
|
||||||
}
|
}
|
||||||
_instance = await create(
|
_instance = await create(
|
||||||
logRepo: logRepo,
|
logRepository: logRepository,
|
||||||
storeRepo: storeRepo,
|
storeRepository: storeRepository,
|
||||||
shouldBuffer: shouldBuffer,
|
shouldBuffer: shouldBuffer,
|
||||||
);
|
);
|
||||||
return _instance!;
|
return _instance!;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<LogService> create({
|
static Future<LogService> create({
|
||||||
required ILogRepository logRepo,
|
required ILogRepository logRepository,
|
||||||
required IStoreRepository storeRepo,
|
required IStoreRepository storeRepository,
|
||||||
bool shouldBuffer = true,
|
bool shouldBuffer = true,
|
||||||
}) async {
|
}) async {
|
||||||
final instance = LogService._(logRepo, storeRepo, shouldBuffer);
|
final instance = LogService._(logRepository, storeRepository, shouldBuffer);
|
||||||
// Truncate logs to 250
|
// Truncate logs to 250
|
||||||
await logRepo.truncate(limit: kLogTruncateLimit);
|
await logRepository.truncate(limit: kLogTruncateLimit);
|
||||||
// Get log level from store
|
// Get log level from store
|
||||||
final level = await instance._storeRepository.tryGet(StoreKey.logLevel);
|
final level = await instance._storeRepository.tryGet(StoreKey.logLevel);
|
||||||
if (level != null) {
|
if (level != null) {
|
||||||
@ -145,7 +145,7 @@ class LoggerUnInitializedException implements Exception {
|
|||||||
extension LevelDomainToInfraExtension on Level {
|
extension LevelDomainToInfraExtension on Level {
|
||||||
LogLevel toLogLevel() =>
|
LogLevel toLogLevel() =>
|
||||||
LogLevel.values.elementAtOrNull(Level.LEVELS.indexOf(this)) ??
|
LogLevel.values.elementAtOrNull(Level.LEVELS.indexOf(this)) ??
|
||||||
LogLevel.INFO;
|
LogLevel.info;
|
||||||
}
|
}
|
||||||
|
|
||||||
extension on LogLevel {
|
extension on LogLevel {
|
||||||
|
@ -5,29 +5,24 @@ part 'log.entity.g.dart';
|
|||||||
|
|
||||||
@Collection(inheritance: false)
|
@Collection(inheritance: false)
|
||||||
class LoggerMessage {
|
class LoggerMessage {
|
||||||
Id id = Isar.autoIncrement;
|
final Id id = Isar.autoIncrement;
|
||||||
String message;
|
final String message;
|
||||||
String? details;
|
final String? details;
|
||||||
@Enumerated(EnumType.ordinal)
|
@Enumerated(EnumType.ordinal)
|
||||||
LogLevel level = LogLevel.INFO;
|
final LogLevel level;
|
||||||
DateTime createdAt;
|
final DateTime createdAt;
|
||||||
String? context1;
|
final String? context1;
|
||||||
String? context2;
|
final String? context2;
|
||||||
|
|
||||||
LoggerMessage({
|
const LoggerMessage({
|
||||||
required this.message,
|
required this.message,
|
||||||
required this.details,
|
required this.details,
|
||||||
required this.level,
|
this.level = LogLevel.info,
|
||||||
required this.createdAt,
|
required this.createdAt,
|
||||||
required this.context1,
|
required this.context1,
|
||||||
required this.context2,
|
required this.context2,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'LoggerMessage(message: $message, level: $level, createdAt: $createdAt)';
|
|
||||||
}
|
|
||||||
|
|
||||||
LogMessage toDto() {
|
LogMessage toDto() {
|
||||||
return LogMessage(
|
return LogMessage(
|
||||||
message: message,
|
message: message,
|
||||||
|
49
mobile/lib/infrastructure/entities/log.entity.g.dart
generated
49
mobile/lib/infrastructure/entities/log.entity.g.dart
generated
@ -117,10 +117,9 @@ LoggerMessage _loggerMessageDeserialize(
|
|||||||
createdAt: reader.readDateTime(offsets[2]),
|
createdAt: reader.readDateTime(offsets[2]),
|
||||||
details: reader.readStringOrNull(offsets[3]),
|
details: reader.readStringOrNull(offsets[3]),
|
||||||
level: _LoggerMessagelevelValueEnumMap[reader.readByteOrNull(offsets[4])] ??
|
level: _LoggerMessagelevelValueEnumMap[reader.readByteOrNull(offsets[4])] ??
|
||||||
LogLevel.ALL,
|
LogLevel.info,
|
||||||
message: reader.readString(offsets[5]),
|
message: reader.readString(offsets[5]),
|
||||||
);
|
);
|
||||||
object.id = id;
|
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +140,7 @@ P _loggerMessageDeserializeProp<P>(
|
|||||||
return (reader.readStringOrNull(offset)) as P;
|
return (reader.readStringOrNull(offset)) as P;
|
||||||
case 4:
|
case 4:
|
||||||
return (_LoggerMessagelevelValueEnumMap[reader.readByteOrNull(offset)] ??
|
return (_LoggerMessagelevelValueEnumMap[reader.readByteOrNull(offset)] ??
|
||||||
LogLevel.ALL) as P;
|
LogLevel.info) as P;
|
||||||
case 5:
|
case 5:
|
||||||
return (reader.readString(offset)) as P;
|
return (reader.readString(offset)) as P;
|
||||||
default:
|
default:
|
||||||
@ -150,28 +149,28 @@ P _loggerMessageDeserializeProp<P>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const _LoggerMessagelevelEnumValueMap = {
|
const _LoggerMessagelevelEnumValueMap = {
|
||||||
'ALL': 0,
|
'all': 0,
|
||||||
'FINEST': 1,
|
'finest': 1,
|
||||||
'FINER': 2,
|
'finer': 2,
|
||||||
'FINE': 3,
|
'fine': 3,
|
||||||
'CONFIG': 4,
|
'config': 4,
|
||||||
'INFO': 5,
|
'info': 5,
|
||||||
'WARNING': 6,
|
'warning': 6,
|
||||||
'SEVERE': 7,
|
'severe': 7,
|
||||||
'SHOUT': 8,
|
'shout': 8,
|
||||||
'OFF': 9,
|
'off': 9,
|
||||||
};
|
};
|
||||||
const _LoggerMessagelevelValueEnumMap = {
|
const _LoggerMessagelevelValueEnumMap = {
|
||||||
0: LogLevel.ALL,
|
0: LogLevel.all,
|
||||||
1: LogLevel.FINEST,
|
1: LogLevel.finest,
|
||||||
2: LogLevel.FINER,
|
2: LogLevel.finer,
|
||||||
3: LogLevel.FINE,
|
3: LogLevel.fine,
|
||||||
4: LogLevel.CONFIG,
|
4: LogLevel.config,
|
||||||
5: LogLevel.INFO,
|
5: LogLevel.info,
|
||||||
6: LogLevel.WARNING,
|
6: LogLevel.warning,
|
||||||
7: LogLevel.SEVERE,
|
7: LogLevel.severe,
|
||||||
8: LogLevel.SHOUT,
|
8: LogLevel.shout,
|
||||||
9: LogLevel.OFF,
|
9: LogLevel.off,
|
||||||
};
|
};
|
||||||
|
|
||||||
Id _loggerMessageGetId(LoggerMessage object) {
|
Id _loggerMessageGetId(LoggerMessage object) {
|
||||||
@ -183,9 +182,7 @@ List<IsarLinkBase<dynamic>> _loggerMessageGetLinks(LoggerMessage object) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _loggerMessageAttach(
|
void _loggerMessageAttach(
|
||||||
IsarCollection<dynamic> col, Id id, LoggerMessage object) {
|
IsarCollection<dynamic> col, Id id, LoggerMessage object) {}
|
||||||
object.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
extension LoggerMessageQueryWhereSort
|
extension LoggerMessageQueryWhereSort
|
||||||
on QueryBuilder<LoggerMessage, LoggerMessage, QWhere> {
|
on QueryBuilder<LoggerMessage, LoggerMessage, QWhere> {
|
||||||
|
@ -5,8 +5,9 @@ part 'store.entity.g.dart';
|
|||||||
/// Internal class for `Store`, do not use elsewhere.
|
/// Internal class for `Store`, do not use elsewhere.
|
||||||
@Collection(inheritance: false)
|
@Collection(inheritance: false)
|
||||||
class StoreValue {
|
class StoreValue {
|
||||||
const StoreValue(this.id, {this.intValue, this.strValue});
|
|
||||||
final Id id;
|
final Id id;
|
||||||
final int? intValue;
|
final int? intValue;
|
||||||
final String? strValue;
|
final String? strValue;
|
||||||
|
|
||||||
|
const StoreValue(this.id, {this.intValue, this.strValue});
|
||||||
}
|
}
|
||||||
|
@ -41,16 +41,16 @@ class AppLogPage extends HookConsumerWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget buildLeadingIcon(LogLevel level) => switch (level) {
|
Widget buildLeadingIcon(LogLevel level) => switch (level) {
|
||||||
LogLevel.INFO => colorStatusIndicator(context.primaryColor),
|
LogLevel.info => colorStatusIndicator(context.primaryColor),
|
||||||
LogLevel.SEVERE => colorStatusIndicator(Colors.redAccent),
|
LogLevel.severe => colorStatusIndicator(Colors.redAccent),
|
||||||
LogLevel.WARNING => colorStatusIndicator(Colors.orangeAccent),
|
LogLevel.warning => colorStatusIndicator(Colors.orangeAccent),
|
||||||
_ => colorStatusIndicator(Colors.grey),
|
_ => colorStatusIndicator(Colors.grey),
|
||||||
};
|
};
|
||||||
|
|
||||||
Color getTileColor(LogLevel level) => switch (level) {
|
Color getTileColor(LogLevel level) => switch (level) {
|
||||||
LogLevel.INFO => Colors.transparent,
|
LogLevel.info => Colors.transparent,
|
||||||
LogLevel.SEVERE => Colors.redAccent.withOpacity(0.25),
|
LogLevel.severe => Colors.redAccent.withOpacity(0.25),
|
||||||
LogLevel.WARNING => Colors.orangeAccent.withOpacity(0.25),
|
LogLevel.warning => Colors.orangeAccent.withOpacity(0.25),
|
||||||
_ => context.primaryColor.withOpacity(0.1),
|
_ => context.primaryColor.withOpacity(0.1),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -49,8 +49,8 @@ abstract final class Bootstrap {
|
|||||||
static Future<void> initDomain(Isar db) async {
|
static Future<void> initDomain(Isar db) async {
|
||||||
await StoreService.init(storeRepository: IsarStoreRepository(db));
|
await StoreService.init(storeRepository: IsarStoreRepository(db));
|
||||||
await LogService.init(
|
await LogService.init(
|
||||||
logRepo: IsarLogRepository(db),
|
logRepository: IsarLogRepository(db),
|
||||||
storeRepo: IsarStoreRepository(db),
|
storeRepository: IsarStoreRepository(db),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,14 +14,14 @@ import '../../test_utils.dart';
|
|||||||
|
|
||||||
final _kInfoLog = LogMessage(
|
final _kInfoLog = LogMessage(
|
||||||
message: '#Info Message',
|
message: '#Info Message',
|
||||||
level: LogLevel.INFO,
|
level: LogLevel.info,
|
||||||
createdAt: DateTime(2025, 2, 26),
|
createdAt: DateTime(2025, 2, 26),
|
||||||
logger: 'Info Logger',
|
logger: 'Info Logger',
|
||||||
);
|
);
|
||||||
|
|
||||||
final _kWarnLog = LogMessage(
|
final _kWarnLog = LogMessage(
|
||||||
message: '#Warn Message',
|
message: '#Warn Message',
|
||||||
level: LogLevel.WARNING,
|
level: LogLevel.warning,
|
||||||
createdAt: DateTime(2025, 2, 27),
|
createdAt: DateTime(2025, 2, 27),
|
||||||
logger: 'Warn Logger',
|
logger: 'Warn Logger',
|
||||||
);
|
);
|
||||||
@ -40,13 +40,15 @@ void main() {
|
|||||||
when(() => mockLogRepo.truncate(limit: any(named: 'limit')))
|
when(() => mockLogRepo.truncate(limit: any(named: 'limit')))
|
||||||
.thenAnswer((_) async => {});
|
.thenAnswer((_) async => {});
|
||||||
when(() => mockStoreRepo.tryGet<int>(StoreKey.logLevel))
|
when(() => mockStoreRepo.tryGet<int>(StoreKey.logLevel))
|
||||||
.thenAnswer((_) async => LogLevel.FINE.index);
|
.thenAnswer((_) async => LogLevel.fine.index);
|
||||||
when(() => mockLogRepo.getAll()).thenAnswer((_) async => []);
|
when(() => mockLogRepo.getAll()).thenAnswer((_) async => []);
|
||||||
when(() => mockLogRepo.insert(any())).thenAnswer((_) async => true);
|
when(() => mockLogRepo.insert(any())).thenAnswer((_) async => true);
|
||||||
when(() => mockLogRepo.insertAll(any())).thenAnswer((_) async => true);
|
when(() => mockLogRepo.insertAll(any())).thenAnswer((_) async => true);
|
||||||
|
|
||||||
sut =
|
sut = await LogService.create(
|
||||||
await LogService.create(logRepo: mockLogRepo, storeRepo: mockStoreRepo);
|
logRepository: mockLogRepo,
|
||||||
|
storeRepository: mockStoreRepo,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
tearDown(() async {
|
tearDown(() async {
|
||||||
@ -72,14 +74,14 @@ void main() {
|
|||||||
setUp(() async {
|
setUp(() async {
|
||||||
when(() => mockStoreRepo.insert<int>(StoreKey.logLevel, any()))
|
when(() => mockStoreRepo.insert<int>(StoreKey.logLevel, any()))
|
||||||
.thenAnswer((_) async => true);
|
.thenAnswer((_) async => true);
|
||||||
await sut.setlogLevel(LogLevel.SHOUT);
|
await sut.setlogLevel(LogLevel.shout);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Updates the log level in store', () {
|
test('Updates the log level in store', () {
|
||||||
final index = verify(
|
final index = verify(
|
||||||
() => mockStoreRepo.insert<int>(StoreKey.logLevel, captureAny()),
|
() => mockStoreRepo.insert<int>(StoreKey.logLevel, captureAny()),
|
||||||
).captured.firstOrNull;
|
).captured.firstOrNull;
|
||||||
expect(index, LogLevel.SHOUT.index);
|
expect(index, LogLevel.shout.index);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Sets log level on logger', () {
|
test('Sets log level on logger', () {
|
||||||
@ -91,8 +93,8 @@ void main() {
|
|||||||
test('Buffers logs until timer elapses', () {
|
test('Buffers logs until timer elapses', () {
|
||||||
TestUtils.fakeAsync((time) async {
|
TestUtils.fakeAsync((time) async {
|
||||||
sut = await LogService.create(
|
sut = await LogService.create(
|
||||||
logRepo: mockLogRepo,
|
logRepository: mockLogRepo,
|
||||||
storeRepo: mockStoreRepo,
|
storeRepository: mockStoreRepo,
|
||||||
shouldBuffer: true,
|
shouldBuffer: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -109,8 +111,8 @@ void main() {
|
|||||||
test('Batch inserts all logs on timer', () {
|
test('Batch inserts all logs on timer', () {
|
||||||
TestUtils.fakeAsync((time) async {
|
TestUtils.fakeAsync((time) async {
|
||||||
sut = await LogService.create(
|
sut = await LogService.create(
|
||||||
logRepo: mockLogRepo,
|
logRepository: mockLogRepo,
|
||||||
storeRepo: mockStoreRepo,
|
storeRepository: mockStoreRepo,
|
||||||
shouldBuffer: true,
|
shouldBuffer: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -131,8 +133,8 @@ void main() {
|
|||||||
test('Does not buffer when off', () {
|
test('Does not buffer when off', () {
|
||||||
TestUtils.fakeAsync((time) async {
|
TestUtils.fakeAsync((time) async {
|
||||||
sut = await LogService.create(
|
sut = await LogService.create(
|
||||||
logRepo: mockLogRepo,
|
logRepository: mockLogRepo,
|
||||||
storeRepo: mockStoreRepo,
|
storeRepository: mockStoreRepo,
|
||||||
shouldBuffer: false,
|
shouldBuffer: false,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -165,8 +167,8 @@ void main() {
|
|||||||
test('Combines result from both DB + Buffer', () {
|
test('Combines result from both DB + Buffer', () {
|
||||||
TestUtils.fakeAsync((time) async {
|
TestUtils.fakeAsync((time) async {
|
||||||
sut = await LogService.create(
|
sut = await LogService.create(
|
||||||
logRepo: mockLogRepo,
|
logRepository: mockLogRepo,
|
||||||
storeRepo: mockStoreRepo,
|
storeRepository: mockStoreRepo,
|
||||||
shouldBuffer: true,
|
shouldBuffer: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -72,8 +72,8 @@ void main() {
|
|||||||
await StoreService.init(storeRepository: IsarStoreRepository(db));
|
await StoreService.init(storeRepository: IsarStoreRepository(db));
|
||||||
await Store.put(StoreKey.currentUser, owner);
|
await Store.put(StoreKey.currentUser, owner);
|
||||||
await LogService.init(
|
await LogService.init(
|
||||||
logRepo: IsarLogRepository(db),
|
logRepository: IsarLogRepository(db),
|
||||||
storeRepo: IsarStoreRepository(db),
|
storeRepository: IsarStoreRepository(db),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
final List<Asset> initialAssets = [
|
final List<Asset> initialAssets = [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user