TypeORM文件日志ormlogs.log的大小限制、查看与配置方法咨询
TypeORM文件日志容量相关问题解答
1. 默认最大容量
TypeORM内置的file类型日志(即配置中logger: "file")没有默认最大容量限制,日志文件会持续写入内容,直到磁盘存储空间耗尽,这也是你的日志文件超过10GB的原因。
2. 如何查看最大容量
- 若使用内置
filelogger:由于默认无容量限制,不存在可查看的默认限制值; - 若已手动配置自定义日志轮转规则:需要查看项目中的TypeORM配置文件(或代码中的连接配置对象)里的自定义logger参数,比如第三方日志库配置中的
maxSize字段。
3. 如何设置指定大小
由于TypeORM内置file logger不支持日志大小限制和自动轮转,需通过以下两种方式实现:
方式一:使用第三方日志库自定义logger(以winston为例)
- 安装依赖:
npm install winston winston-daily-rotate-file
- 创建自定义logger文件(如
custom-logger.ts):
import { Logger } from "typeorm"; import winston from "winston"; import DailyRotateFile from "winston-daily-rotate-file"; export class CustomFileLogger implements Logger { private logger: winston.Logger; constructor() { this.logger = winston.createLogger({ level: "info", format: winston.format.combine( winston.format.timestamp(), winston.format.json() ), transports: [ new DailyRotateFile({ filename: "ormlogs-%DATE%.log", dirname: "./", maxSize: "100m", // 单文件最大容量,支持单位:k/m/g maxFiles: "14d", // 可选,保留14天内的日志文件 }), ], }); } // 实现TypeORM Logger接口的所有方法 logQuery(query: string, parameters?: any[]) { this.logger.info(`Query: ${query} Parameters: ${JSON.stringify(parameters)}`); } logQueryError(error: string, query: string, parameters?: any[]) { this.logger.error(`Query Error: ${error} Query: ${query} Parameters: ${JSON.stringify(parameters)}`); } logQuerySlow(time: number, query: string, parameters?: any[]) { this.logger.warn(`Slow Query: ${time}ms Query: ${query} Parameters: ${JSON.stringify(parameters)}`); } logSchemaBuild(message: string) { this.logger.info(`Schema Build: ${message}`); } logMigration(message: string) { this.logger.info(`Migration: ${message}`); } log(level: "log" | "info" | "warn", message: any) { this.logger[level](message); } }
- 修改TypeORM连接配置,使用自定义logger:
import { CustomFileLogger } from "./custom-logger"; const connectionOptions = { name: "mysql", type: "mysql", host: "localhost", port: 3306, username: "test", password: "test", database: "test", logging: true, logger: new CustomFileLogger(), };
方式二:使用系统层面的日志轮转工具(以Linux logrotate为例)
- 创建logrotate配置文件(如
/etc/logrotate.d/orm-logs):
/path/to/your/project/ormlogs.log { size 100M rotate 10 compress missingok notifempty create 644 user group }
size 100M:当文件达到100MB时触发轮转rotate 10:保留最多10个轮转后的日志文件compress:对旧日志文件进行压缩create 644 user group:轮转后创建新的日志文件并设置权限
- 配置定时任务,让logrotate定期执行(默认系统已配置每日执行,可手动测试:
logrotate -f /etc/logrotate.d/orm-logs)
内容的提问来源于stack exchange,提问作者pratik_a
相关产品推荐
相关产品推荐

