Skip to content

期望设置所有的日志输出格式为JSON,但是不生效。 #129

@MlAvanti

Description

@MlAvanti

1、项目说明: midway v3 + koa
1、期望效果:将所有应用日志均输出为JSON格式。
2、实际效果:仅midway-core日志生效。
midway-core.json.log:
{"timestamp":"2024-08-27 11:18:48.159","level":"info","pid":42469,"message":"[midway:redis] client connect success"}
midway-cron.json.log:
2024-08-27 11:18:00.048 ERROR 41827 [DailyAnalyzeJob] 出错了

3、config.default.ts代码实例:

midwayLogger: {
      default: {
        level: 'warn',
        dir: path.join(appInfo.baseDir, './../logs/'),
        transports: {
          console: false,
          error: {
            fileLogName: 'common-error.json.log',
          },
        },
        format: (info: LoggerInfo) => {
          const { timestamp, level, pid, message } = info;
          return JSON.stringify({
            timestamp,
            level,
            pid,
            message,
          });
        },
      },
      clients: {
        coreLogger: {
          fileLogName: 'midway-core.json.log',
        },
        appLogger: {
          fileLogName: 'midway-web.json.log',
        },
        agentLogger: {
          fileLogName: 'midway-agent.json.log',
        },
        cronLogger: {
          fileLogName: 'midway-cron.json.log',
        },
      },
    }

4、日志输出方式:

import { ILogger } from '@midwayjs/logger';

@Inject()
  logger: ILogger;

this.logger.error(err)

5、补充说明:通过手动设置修改Koa上下文日志格式,可以在请求时让conmon-error日志中输出JSON格式,但是在job定时任务里面依然无法输出JSON格式。

koa: {
       ...
      contextLoggerFormat: (info: LoggerInfo) => {
        const { timestamp, level, pid, message } = info;
        return JSON.stringify({
          timestamp,
          level,
          pid,
          message,
        });
      },
    },

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions