当前位置: 首页 > news >正文

徐州网站建设报价潜水艇官方网站代理

徐州网站建设报价,潜水艇官方网站代理,python开发订阅号,青岛建个网站多少钱nest日志 三种node服务端日志选型 winstonpinolog4js 2023年5月23日 看star数#xff1a;winston pino log4js 使用体验#xff1a; pino 格式简洁#xff0c;速度快#xff0c;支持输入日志到任意数据库#xff0c;日志暂无自动清理#xff08;可能是我…nest日志 三种node服务端日志选型 winstonpinolog4js 2023年5月23日 看star数winston pino log4js 使用体验 pino 格式简洁速度快支持输入日志到任意数据库日志暂无自动清理可能是我方式不对知道的朋友评论下告诉我十分感谢~winston 通用稳定日志可自动清理。log4js 不知为啥不想使用除非你劝我。 pino 目前使用 pino npm install pino nestjs-pino pino-http npm install nanoid npm install pino-pretty -D npm install pino-roll -D pino-pretty: 格式化用 pino-roll: 日志设置文件大小分割周期日志名。 特点 Pino的内部架构基于Worker Threads配置简单支持日志类型指定输出到不同文件(会导致速度慢)支持输出日志到任意数据库中 问题日志需要自己做定时任务清理避免占用内存。 main.ts import { Logger } from nestjs-pino; const app await NestFactory.createNestExpressApplication(AppModule, {bufferLogs: true, // 使用外部的日志包pino});app.useLogger(app.get(Logger));app.flushLogs();logger.config.ts import { nanoid } from nanoid; import type { Request } from express; import { IncomingMessage } from http; import type { Params } from nestjs-pino; import { multistream } from pino; import type { ReqId } from pino-http; import { join } from path; import { format } from date-fns; const passUrl new Set([./health]); export const loggerOptions: Params {pinoHttp: [{// https://getpino.io/#/docs/api?idtimestamp-boolean-functionquietReqLogger: true,genReqId: (req: IncomingMessage): ReqId (Requestreq).header(X-Request-id) || nanoid(),...(process.env.NODE_ENV production? {// https://www.npmjs.com/package/pino-rolllevel: error,transport: {target: pino-roll,options: {file: join(logs, log),size: 10m,// 周期frequency: daily,mkdir: true,extension: .${format(new Date(), yyyy-MM-dd)}.json,},},}: {level: debug,transport: {// https://github.com/pinojs/pino-prettytarget: pino-pretty,options: { sync: true, colorize: true },// options: { sync: true, singleLine: true, colorize: true }, // 生产环境再设置压缩为一行},}),autoLogging: {ignore: (req: IncomingMessage) passUrl.has((Requestreq).originalUrl),},},multistream([{ level: debug, stream: process.stdout },{ level: error, stream: process.stdout },{ level: fatal, stream: process.stdout },],{ dedupe: true }, // 删除重复输出),], };其他设置模式不如上面的设置少了日志分割和文件大小配置但pino还有流操作里面可以写逻辑自己写怎么分割日志或者限制文件大小等等于自配。 // 1. pino/file const file process.cwd() /logs/log-${format(new Date(), yyyy-MM-dd)}.json; {level: info,transport: {target: pino/file,options: {destination: file, // 1 是直接输出 2是错误时输出其他为自己设置的目录文件mkdir: true,},}, } // 使用内置的pino/file传输和使用pino.destination的区别在于pino.destination在主线程中运行而pino/file在工作线程中设置pino.destimation// 2. pino/file target: pino-pretty, 使用 winston [nest-winston][nest-winston] 日志记录[winston-daily-rotate-file][winston-daily-rotate-file] 配置生产环境日志 npm install --save nest-winston winston npm install winston-daily-rotate-file 采用[bootstrap配置方式][replacing-the-nest-logger-also-for-bootstrapping] main.ts const app await NestFactory.createNestExpressApplication(AppModule, {logger: WinstonModule.createLogger({instance: createLogger({ ...loggerOptions }),}), });logger.config.ts import * as winston from winston; import { utilities as nestWinstonModuleUtilities } from nest-winston; import DailyRotateFile from winston-daily-rotate-file; const format (label?: string) {switch (label) {case isDev:return {format: winston.format.combine(winston.format.timestamp(),winston.format.ms(),nestWinstonModuleUtilities.format.nestLike(nestBk, {colors: true,prettyPrint: true,}),),};default:return {format: winston.format.combine(winston.format.timestamp(),winston.format.ms(),),};} }; const prodLoggerConfig [new DailyRotateFile({level: warn,filename: nestBk-%DATE%.log,dirname: logs,datePattern: YYYY-MM-DD-HH,maxSize: 20m,maxFiles: 14d,zippedArchive: true,...format(),}),new DailyRotateFile({level: info,filename: info-%DATE%.log,dirname: logs,datePattern: YYYY-MM-DD-HH,maxSize: 20m,maxFiles: 14d,zippedArchive: true,...format(),}), ];export const loggerOptions {transports: [new winston.transports.Console({level: info,...format(isDev),}),...(IsProMode ? prodLoggerConfig : []),], }; 使用时 xxx.module.ts providers: [CatsService, Logger],xxx.controller.ts import { Logger } from nestjs/common;private readonly logger: Logger,this.logger.log(请求成功);this.logger.warn(请求警告);this.logger.error(请求错误);样式没啥变化反而喜欢pino的简洁样式 主要是多了个自动到期删除的配置不用自己手动删除日志 QA: nanoid esm 问题直接降级处理 官方issues “nanoid”: “^.4.x.x” “nanoid”: “^3.3.6”, 参考
http://www.hkea.cn/news/14492767/

相关文章:

  • 怎样建设一个公司网站网站开发 周期
  • 凡科企业网站如何建设wordpress新用户默认
  • 企业网站系统cms合肥网站建设市场
  • 网站广告做的好的企业案例分析东莞学网站建设难吗
  • 做vr网站wordpress问题解决
  • 网站首页 如何设置wordpress百度网盘插件
  • 奉贤网站建设专家淄博 网站制作
  • 高大上设计网站欣赏新闻发布会活动方案
  • 如何搭建免费网站宁波奉化建设局网站
  • 汇鑫网站建设便捷上海网站优化海
  • 湖南城市建设技术学院官方网站网站 谁建设谁负责
  • 如何做充值网站建视频网站系统
  • 建站总结报告最近最新mv在线观看免费高清
  • 买外贸服装去哪个网站wordpress修改站点名
  • 模板建站常规流程设计网名的花样符号
  • 成都建设学校网站wordpress企业内网主题
  • 秦皇岛城乡住房建设厅网站网站建设基础教程人教版
  • 长沙米拓建站28商机网创业项目
  • 企业先做网站还是先做淘宝阿里巴巴推广
  • 免费网站空间可访问做电商引流软文网站
  • 众网站微页制作网站模板下载
  • 目录浏览的网站深圳谷歌网络推广公司
  • 收费网站方案在线制图免费
  • 阿里云企业网站搭建制作网站怎么用图片做背景
  • 机关建设网站rails 开发的网站开发
  • 什么网站做全景效果图好门户网站舆情怎么做
  • 没电脑可以建网站吗购物网站建设项目可研报告
  • 如何创建div做网站河北做网站的
  • 沈阳网站关键词优化想做个网站不知道做什么
  • 做蛋糕网站策划书销售管理系统数据流图