上一篇文章 我写了 【NestJs】日志收集,当然 那么些 在企业开发中会比较乱,也不是很符合开发规范,接下来的这一篇 调整一下文件结构。
借助cli功能开始重构:
nest g mo logs
import { Module } from '@nestjs/common';
import { utilities, WinstonModule, WinstonModuleOptions } from 'nest-winston';
import { ConfigService } from '@nestjs/config';
import * as winston from 'winston';
import { Console, DailyRotateFile } from 'winston/lib/winston/transports';
import 'winston-daily-rotate-file';
import { LogEnum } from '../enum/config.enum';
@Module({
imports: [
WinstonModule.forRootAsync({
inject: [ConfigService],
useFactory: (configService: ConfigService) => {
const consoleTransPorts = new Console({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
utilities.format.nestLike(),
),
});
const dailyRotateFile = new DailyRotateFile({
level: 'warn',
dirname: 'logs',
filename: 'application-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.simple(),
),
});
const dailyInfoRotateFile = new DailyRotateFile({
level: configService.get(LogEnum.LOG_LEVEL),
dirname: 'logs',
filename: 'info-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.simple(),
),
});
return {
transports: [
consoleTransPorts,
...(configService.get(LogEnum.LOG_ON)
? [dailyRotateFile, dailyInfoRotateFile]
: []),
],
};
},
}),
],
})
export class LogsModule {}
.ENV
DB_TYPE=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_SYNC=false
LOG_ON=true
LOG_LEVEL=info
main.ts
// import { Logger } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { WINSTON_MODULE_NEST_PROVIDER } from 'nest-winston';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule, {
});
app.useLogger(app.get(WINSTON_MODULE_NEST_PROVIDER));
app.setGlobalPrefix('api/v1');
const port = 3000;
await app.listen(port);
}
bootstrap();
user.control.ts
import {
Controller,
Delete,
Get,
Patch,
Post,
Inject,
LoggerService,
} from '@nestjs/common';
import { UserService } from './user.service';
import { ConfigService } from '@nestjs/config';
import { User } from './user.entity';
import { WINSTON_MODULE_NEST_PROVIDER } from 'nest-winston';
@Controller('user')
export class UserController {
// private logger = new Logger(UserController.name);
constructor(
private userService: UserService,
private configService: ConfigService,
@Inject(WINSTON_MODULE_NEST_PROVIDER)
private readonly logger: LoggerService,
) {
this.logger.log('UserController init');
}
@Get()
getUsers(): any {
this.logger.log(`请求getUsers成功`);
this.logger.warn(`请求getUsers成功`);
this.logger.error(`请求getUsers成功`);
return this.userService.findAll();
// return this.userService.getUsers();
}
}
如果看到代码不太懂的可以看我的上一篇文章【NestJs】日志收集