You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeORM文件日志ormlogs.log的大小限制、查看与配置方法咨询

TypeORM文件日志容量相关问题解答

1. 默认最大容量

TypeORM内置的file类型日志(即配置中logger: "file")没有默认最大容量限制,日志文件会持续写入内容,直到磁盘存储空间耗尽,这也是你的日志文件超过10GB的原因。

2. 如何查看最大容量

  • 若使用内置file logger:由于默认无容量限制,不存在可查看的默认限制值;
  • 若已手动配置自定义日志轮转规则:需要查看项目中的TypeORM配置文件(或代码中的连接配置对象)里的自定义logger参数,比如第三方日志库配置中的maxSize字段。

3. 如何设置指定大小

由于TypeORM内置file logger不支持日志大小限制和自动轮转,需通过以下两种方式实现:

方式一:使用第三方日志库自定义logger(以winston为例)

  1. 安装依赖:
npm install winston winston-daily-rotate-file
  1. 创建自定义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);
  }
}
  1. 修改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为例)

  1. 创建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:轮转后创建新的日志文件并设置权限
  1. 配置定时任务,让logrotate定期执行(默认系统已配置每日执行,可手动测试:logrotate -f /etc/logrotate.d/orm-logs)

内容的提问来源于stack exchange,提问作者pratik_a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:35:38