предисловие
nest-logs
Управление пакетами журналов, в основном для облегчения разработки и онлайн-поиска кода.bug
Для подготовленных журналы классифицируются и управляются по дате и категории, а журналы хранятся в виде файлов для удобного просмотра.По истечении времени они автоматически удаляются для экономии места на диске.
исходный адрес гитхаба, Добро пожаловатьStar
.
один,Nestjs
Пакет управления средним журналом
-
1. В вашем
nestjs
Установить зависимости в проектеnpm install nest-logs
-
2. В
app.module.ts
импортировать пакет модуля журнала вimport { NestLogsModule} from 'nest-logs'; @Module({ imports: [ NestLogsModule ], controllers: [], providers: [ ], }) export class AppModule { }
2. Основное использование
-
1. Если вы хотите перехватывать каждый запрос, вы можете добавить на контроллер
nest-logs
Декораторы в комплектеimport { NestLogger } from 'nest-logs'; @NestLogger() @Controller() export class AppController {}
# 运行后的效果,可以将一系列的参数打印出来 2021-04-25 09:20:30 [INFO] [MacBook-Pro-6.local] app.controller.js: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 当前类名: AppController 当前方法名: hello 当前请求: POST - / IP: ::ffff:127.0.0.1 当前Params参数: {} 当前Query参数: {} 当前请求体: { "username": "admin", "password": "123456" } >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-
2. Используйте печать журнала в другом месте (Например в контроллере)
По умолчанию он будет храниться в лог-файле, если вы не хотите хранить, а хотите просто отобразить лог на консоли, вы можете добавить второй параметр как
false
import { Logger } from 'nest-logs'; ... @Get() getHello(): string { // 会存储到日志文件中和在控制台上打印 Logger.info("测试代码") // 仅仅在控制台打印 Logger.info("测试代码", false) return this.appService.getHello(); } ...
2021-04-25 09:19:45 [INFO] [MacBook-Pro-6.local] [app.controller.js]-[AppController.getHello]: "测试代码"
3. Сочетание производства и онлайнPM2
использовать
-
1. Создайте проект в корневом каталоге проекта
ecosystem.config.js
Вы можете напрямую скопировать мое прошлое использование
/* eslint-disable @typescript-eslint/camelcase */ module.exports = { apps: [{ name: 'nest-server', // 项目名字,启动后的名字 script: './dist/main.js', // 执行的文件 cwd: './', // 根目录 args: '', // 传递给脚本的参数 watch: true, // 开启监听文件变动重启 ignore_watch: ['node_modules', 'public', 'logs'], // 不用监听的文件 exec_mode: 'cluster_mode', instances: '2', // max表示最大的 应用启动实例个数,仅在 cluster 模式有效 默认为 fork autorestart: true, // 默认为 true, 发生异常的情况下自动重启 max_memory_restart: '1G', instance_var: "INSTANCE_ID", // 添加这一行可以实现使用nest-logs包的日志管理 // error_file: './logs/app-err.log', // 错误日志文件 // out_file: './logs/app-out.log', // 正常日志文件 // merge_logs: true, // 设置追加日志而不是新建日志 // log_date_format: 'YYYY-MM-DD HH:mm:ss', // 指定日志文件的时间格式 min_uptime: '60s', // 应用运行少于时间被认为是异常启动 max_restarts: 30, // 最大异常重启次数 restart_delay: 60, // 异常重启情况下,延时重启时间 env: { // 环境参数,当前指定为开发环境 NODE_ENV: 'development' }, env_production: { // 环境参数,当前指定为生产环境 NODE_ENV: 'production' }, env_test: { // 环境参数,当前为测试环境 NODE_ENV: 'test' } }], deploy: { production: { user: 'root', host: '39.**.99.86', ref: 'origin/master', repo: 'git@github.com:repo.git', path: '/var/www/nest-test', 'post-deploy': 'npm install && npm run build && pm2 reload ecosystem.config.js --env production' } } }
-
2,
package.json
Настройте сценарий развертывания при запуске в"scripts": { ... "pm2:prod": "pm2 start ecosystem.config.js --env production", "pm2:dev": "pm2 start ecosystem.config.js --env development", "pm2:test": "pm2 start ecosystem.config.js --env test" },
-
3. Онлайн-просмотр журнала динамического просмотра
tail -f 日志文件名