@blueleader07/typeorm
Version:
Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.
123 lines (121 loc) • 4.73 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AdvancedConsoleLogger = void 0;
const PlatformTools_1 = require("../platform/PlatformTools");
/**
* Performs logging of the events in TypeORM.
* This version of logger uses console to log events and use syntax highlighting.
*/
class AdvancedConsoleLogger {
// -------------------------------------------------------------------------
// Constructor
// -------------------------------------------------------------------------
constructor(options) {
this.options = options;
}
// -------------------------------------------------------------------------
// Public Methods
// -------------------------------------------------------------------------
/**
* Logs query and parameters used in it.
*/
logQuery(query, parameters, queryRunner) {
if (this.options === "all" ||
this.options === true ||
(Array.isArray(this.options) &&
this.options.indexOf("query") !== -1)) {
const sql = query +
(parameters && parameters.length
? " -- PARAMETERS: " + this.stringifyParams(parameters)
: "");
PlatformTools_1.PlatformTools.logInfo("query:", PlatformTools_1.PlatformTools.highlightSql(sql));
}
}
/**
* Logs query that is failed.
*/
logQueryError(error, query, parameters, queryRunner) {
if (this.options === "all" ||
this.options === true ||
(Array.isArray(this.options) &&
this.options.indexOf("error") !== -1)) {
const sql = query +
(parameters && parameters.length
? " -- PARAMETERS: " + this.stringifyParams(parameters)
: "");
PlatformTools_1.PlatformTools.logError(`query failed:`, PlatformTools_1.PlatformTools.highlightSql(sql));
PlatformTools_1.PlatformTools.logError(`error:`, error);
}
}
/**
* Logs query that is slow.
*/
logQuerySlow(time, query, parameters, queryRunner) {
const sql = query +
(parameters && parameters.length
? " -- PARAMETERS: " + this.stringifyParams(parameters)
: "");
PlatformTools_1.PlatformTools.logWarn(`query is slow:`, PlatformTools_1.PlatformTools.highlightSql(sql));
PlatformTools_1.PlatformTools.logWarn(`execution time:`, time);
}
/**
* Logs events from the schema build process.
*/
logSchemaBuild(message, queryRunner) {
if (this.options === "all" ||
(Array.isArray(this.options) &&
this.options.indexOf("schema") !== -1)) {
PlatformTools_1.PlatformTools.log(message);
}
}
/**
* Logs events from the migration run process.
*/
logMigration(message, queryRunner) {
PlatformTools_1.PlatformTools.log(message);
}
/**
* Perform logging using given logger, or by default to the console.
* Log has its own level and message.
*/
log(level, message, queryRunner) {
switch (level) {
case "log":
if (this.options === "all" ||
(Array.isArray(this.options) &&
this.options.indexOf("log") !== -1))
PlatformTools_1.PlatformTools.log(message);
break;
case "info":
if (this.options === "all" ||
(Array.isArray(this.options) &&
this.options.indexOf("info") !== -1))
PlatformTools_1.PlatformTools.logInfo("INFO:", message);
break;
case "warn":
if (this.options === "all" ||
(Array.isArray(this.options) &&
this.options.indexOf("warn") !== -1))
console.warn(PlatformTools_1.PlatformTools.warn(message));
break;
}
}
// -------------------------------------------------------------------------
// Protected Methods
// -------------------------------------------------------------------------
/**
* Converts parameters to a string.
* Sometimes parameters can have circular objects and therefore we are handle this case too.
*/
stringifyParams(parameters) {
try {
return JSON.stringify(parameters);
}
catch (error) {
// most probably circular objects in parameters
return parameters;
}
}
}
exports.AdvancedConsoleLogger = AdvancedConsoleLogger;
//# sourceMappingURL=AdvancedConsoleLogger.js.map