333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/logger/FileLogger.ts"],"names":[],"mappings":"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","file":"FileLogger.js","sourcesContent":["import {LoggerOptions} from \"./LoggerOptions\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {Logger} from \"./Logger\";\nimport {PlatformTools} from \"../platform/PlatformTools\";\n\n/**\n * Performs logging of the events in TypeORM.\n * This version of logger logs everything into ormlogs.log file.\n */\nexport class FileLogger implements Logger {\n\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n\n    constructor(private options?: LoggerOptions) {\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Logs query and parameters used in it.\n     */\n    logQuery(query: string, parameters?: any[], queryRunner?: QueryRunner) {\n        if (this.options === \"all\" || this.options === true || (this.options instanceof Array && this.options.indexOf(\"query\") !== -1)) {\n            const sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n            this.write(\"[QUERY]: \" + sql);\n        }\n    }\n\n    /**\n     * Logs query that is failed.\n     */\n    logQueryError(error: string, query: string, parameters?: any[], queryRunner?: QueryRunner) {\n        if (this.options === \"all\" || this.options === true || (this.options instanceof Array && this.options.indexOf(\"error\") !== -1)) {\n            const sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n            this.write([\n                `[FAILED QUERY]: ${sql}`,\n                `[QUERY ERROR]: ${error}`\n            ]);\n        }\n    }\n\n    /**\n     * Logs query that is slow.\n     */\n    logQuerySlow(time: number, query: string, parameters?: any[], queryRunner?: QueryRunner) {\n        const sql = query + (parameters && parameters.length ? \" -- PARAMETERS: \" + this.stringifyParams(parameters) : \"\");\n        this.write(`[SLOW QUERY: ${time} ms]: ` + sql);\n    }\n\n    /**\n     * Logs events from the schema build process.\n     */\n    logSchemaBuild(message: string, queryRunner?: QueryRunner) {\n        if (this.options === \"all\" || (this.options instanceof Array && this.options.indexOf(\"schema\") !== -1)) {\n            this.write(message);\n        }\n    }\n\n    /**\n     * Logs events from the migrations run process.\n     */\n    logMigration(message: string, queryRunner?: QueryRunner) {\n        this.write(message);\n    }\n\n    /**\n     * Perform logging using given logger, or by default to the console.\n     * Log has its own level and message.\n     */\n    log(level: \"log\"|\"info\"|\"warn\", message: any, queryRunner?: QueryRunner) {\n        switch (level) {\n            case \"log\":\n                if (this.options === \"all\" || (this.options instanceof Array && this.options.indexOf(\"log\") !== -1))\n                    this.write(\"[LOG]: \" + message);\n                break;\n            case \"info\":\n                if (this.options === \"all\" || (this.options instanceof Array && this.options.indexOf(\"info\") !== -1))\n                    this.write(\"[INFO]: \" + message);\n                break;\n            case \"warn\":\n                if (this.options === \"all\" || (this.options instanceof Array && this.options.indexOf(\"warn\") !== -1))\n                    this.write(\"[WARN]: \" + message);\n                break;\n        }\n    }\n\n    // -------------------------------------------------------------------------\n    // Protected Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Writes given strings into the log file.\n     */\n    protected write(strings: string|string[]) {\n        strings = strings instanceof Array ? strings : [strings];\n        const basePath = PlatformTools.load(\"app-root-path\").path;\n        strings = (strings as string[]).map(str => \"[\" + new Date().toISOString() + \"]\" + str);\n        PlatformTools.appendFileSync(basePath + \"/ormlogs.log\", strings.join(\"\\r\\n\") + \"\\r\\n\"); // todo: use async or implement promises?\n    }\n\n    /**\n     * Converts parameters to a string.\n     * Sometimes parameters can have circular objects and therefor we are handle this case too.\n     */\n    protected stringifyParams(parameters: any[]) {\n        try {\n            return JSON.stringify(parameters);\n\n        } catch (error) { // most probably circular objects in parameters\n            return parameters;\n        }\n    }\n\n}"],"sourceRoot":".."}