@nodeboot/starter-persistence
Version:
Nodeboot starter package for persistence. Supports data access layer auto-configuration providing features like database initialization, consistency check, entity mapping, repository pattern, transactions, paging, migrations, persistence listeners, persis
78 lines • 2.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PersistenceLogger = void 0;
const typeorm_1 = require("typeorm");
/**
* Logger implementation for TypeORM that delegates log messages
* to a Winston logger, formatted according to persistence configuration.
*
* Extends TypeORM's {@link AbstractLogger}.
*
* @author Manuel Santos <https://github.com/manusant>
*/
class PersistenceLogger extends typeorm_1.AbstractLogger {
logger;
configs;
/**
* Creates a new PersistenceLogger instance.
*
* @param {Logger} logger - The Winston logger instance to delegate logging to.
* @param {PersistenceProperties} configs - Configuration properties for persistence and logging format.
*/
constructor(logger, configs) {
super();
this.logger = logger;
this.configs = configs;
}
/**
* Writes log messages to the configured logger.
*
* Processes a single or multiple log messages, formats them according to
* configured log format, then sends them to the appropriate Winston logging method
* depending on the log level or message type.
*
* @param {LogLevel} level - The TypeORM log level of the message(s).
* @param {LogMessage | LogMessage[]} logMessage - One or more log messages to be written.
*/
writeLog(level, logMessage) {
const messages = this.prepareLogMessages(logMessage, this.configs.logFormat);
for (const message of messages) {
switch (message.type ?? level) {
case "log":
case "schema-build":
case "migration":
this.logger.debug(message.message);
break;
case "info":
case "query":
if (message.prefix) {
this.logger.info(message.prefix, message.message);
}
else {
this.logger.info(message.message);
}
break;
case "warn":
case "query-slow":
if (message.prefix) {
this.logger.warn(message.prefix, message.message);
}
else {
this.logger.warn(message.message);
}
break;
case "error":
case "query-error":
if (message.prefix) {
this.logger.error(message.prefix, message.message);
}
else {
this.logger.error(message.message);
}
break;
}
}
}
}
exports.PersistenceLogger = PersistenceLogger;
//# sourceMappingURL=PersistenceLogger.js.map