mirror of
https://github.com/immich-app/immich
synced 2025-11-07 17:27:20 +00:00
feat: use sqlite for logging (#20414)
* feat: use drift for logging * fix: tests * feat: use the truncate limit from constants.ts as default * chore: move setupAll to top level and restructure * chore: code review changes * fix: inherits * feat: raise log line limit to 2000 * limit getAll to 250 lines * delete DLog and make LogRepository not a singleton * fix: drift build settings and `make migration` * fix: tests * remove sensitive log --------- Co-authored-by: Alex <alex.tran1502@gmail.com>
This commit is contained in:
parent
f2067221c5
commit
3cd7f5ab90
23 changed files with 879 additions and 1563 deletions
|
|
@ -1,47 +1,29 @@
|
|||
import 'package:immich_mobile/domain/models/log.model.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:immich_mobile/infrastructure/entities/log.entity.drift.dart';
|
||||
import 'package:immich_mobile/domain/models/log.model.dart' as domain;
|
||||
|
||||
part 'log.entity.g.dart';
|
||||
class LogMessageEntity extends Table {
|
||||
const LogMessageEntity();
|
||||
|
||||
@Collection(inheritance: false)
|
||||
class LoggerMessage {
|
||||
final Id id = Isar.autoIncrement;
|
||||
final String message;
|
||||
final String? details;
|
||||
@Enumerated(EnumType.ordinal)
|
||||
final LogLevel level;
|
||||
final DateTime createdAt;
|
||||
final String? context1;
|
||||
final String? context2;
|
||||
@override
|
||||
String get tableName => 'logger_messages';
|
||||
|
||||
const LoggerMessage({
|
||||
required this.message,
|
||||
required this.details,
|
||||
this.level = LogLevel.info,
|
||||
required this.createdAt,
|
||||
required this.context1,
|
||||
required this.context2,
|
||||
});
|
||||
|
||||
LogMessage toDto() {
|
||||
return LogMessage(
|
||||
message: message,
|
||||
level: level,
|
||||
createdAt: createdAt,
|
||||
logger: context1,
|
||||
error: details,
|
||||
stack: context2,
|
||||
);
|
||||
}
|
||||
|
||||
static LoggerMessage fromDto(LogMessage log) {
|
||||
return LoggerMessage(
|
||||
message: log.message,
|
||||
details: log.error,
|
||||
level: log.level,
|
||||
createdAt: log.createdAt,
|
||||
context1: log.logger,
|
||||
context2: log.stack,
|
||||
);
|
||||
}
|
||||
IntColumn get id => integer().autoIncrement()();
|
||||
TextColumn get message => text()();
|
||||
TextColumn get details => text().nullable()();
|
||||
IntColumn get level => intEnum<domain.LogLevel>()();
|
||||
DateTimeColumn get createdAt => dateTime()();
|
||||
TextColumn get logger => text().nullable()();
|
||||
TextColumn get stack => text().nullable()();
|
||||
}
|
||||
|
||||
extension LogMessageEntityDataDomainEx on LogMessageEntityData {
|
||||
domain.LogMessage toDto() => domain.LogMessage(
|
||||
message: message,
|
||||
level: level,
|
||||
createdAt: createdAt,
|
||||
logger: logger,
|
||||
error: details,
|
||||
stack: stack,
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue