如何在 winston 和 app.module.ts 中为 Linux 和 Windows localhost 设置路径

How to setup the path in winston and app.module.ts for Linux and Windows localhost

我不能成为第一个在 Windows 10 上开发并希望本地主机上的开发模式日志文件和 pump/pipe 如果它处于集成状态或 /var/logs/myservice 文件夹中生产。

如何根据环境变量将window路径替换为linux路径?

在这种情况下,我使用 winston 和 nestjs。

import { Module } from '@nestjs/common';
import { EventEmitterModule } from '@nestjs/event-emitter';
import { AppController } from './app.controller';
import { AppGateway } from './app.gateway';
import { AppService } from './app.service';
import { WinstonModule } from 'nest-winston';
import * as winston from 'winston';


@Module({
  imports: [ 
    WinstonModule.forRoot({
      level: 'info',
      format: winston.format.json(),
      defaultMeta: { service: 'trading-signal-listener' },
      transports: [
        //
        // - Write all logs with level `error` and below to `error.log`
        // - Write all logs with level `info` and below to `combined.log`
        //
        new winston.transports.File({ filename: 'error.log', level: 'error' }),
        new winston.transports.File({ filename: 'combined.log' }),
      ],
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

感谢任何帮助。

我不太确定你的问题是什么,你不能像这里描述的那样使用 @nestjs/config https://docs.nestjs.com/techniques/configuration 并根据环境变量将特定路径传递给你的 WinstonModule 吗?

人们会使用常规 process.env 变量并且它有效。

new winston.transports.File({ filename: process.env.logfile}),
        new winston.transports.File({ filename: process.env.errorfile, level: 'error' }),