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

网站建设分哪几个版块主图模板

网站建设分哪几个版块,主图模板,3d设计房子的软件,怎么推广软件让别人下载众所周知#xff0c;nest是自带日志的。但是好像没有log4j香#xff0c;所以咱们来用log4j吧~ 我只演示最简单的用法#xff0c;用具体怎么样用大家可以自己进行封装。就像前端封装自己的请求一样。 一、安装 yarn add log4js stacktrace-js 二、使用 主要就三个文件nest是自带日志的。但是好像没有log4j香所以咱们来用log4j吧~ 我只演示最简单的用法用具体怎么样用大家可以自己进行封装。就像前端封装自己的请求一样。 一、安装 yarn add log4js stacktrace-js 二、使用 主要就三个文件配置log4j文件、中间件文件、main.ts 配置log4j文件src/utils/log4j.ts import * as Path from path; import * as Log4js from log4js; import * as Util from util; import * as Moment from moment; // 处理时间的工具 import * as StackTrace from stacktrace-js; import Chalk from chalk; import config from ../config/log4js;// 日志级别 export enum LoggerLevel {ALL ALL,MARK MARK,TRACE TRACE,DEBUG DEBUG,INFO INFO,WARN WARN,ERROR ERROR,FATAL FATAL,OFF OFF, }// 内容跟踪类 export class ContextTrace {constructor(public readonly context: string,public readonly path?: string,public readonly lineNumber?: number,public readonly columnNumber?: number,) {} }Log4js.addLayout(Awesome-nest, (logConfig: any) {return (logEvent: Log4js.LoggingEvent): string {let moduleName ;let position ;// 日志组装const messageList: string[] [];logEvent.data.forEach((value: any) {if (value instanceof ContextTrace) {moduleName value.context;// 显示触发日志的坐标行列if (value.lineNumber value.columnNumber) {position ${value.lineNumber}, ${value.columnNumber};}return;}if (typeof value ! string) {value Util.inspect(value, false, 3, true);}messageList.push(value);});// 日志组成部分const messageOutput: string messageList.join( );const positionOutput: string position ? [${position}] : ;const typeOutput [${logConfig.type}] ${logEvent.pid.toString()} - ;const dateOutput ${Moment(logEvent.startTime).format(YYYY-MM-DD HH:mm:ss,)};const moduleOutput: string moduleName? [${moduleName}] : [LoggerService] ;let levelOutput [${logEvent.level}] ${messageOutput};// 根据日志级别用不同颜色区分switch (logEvent.level.toString()) {case LoggerLevel.DEBUG:levelOutput Chalk.green(levelOutput);break;case LoggerLevel.INFO:levelOutput Chalk.cyan(levelOutput);break;case LoggerLevel.WARN:levelOutput Chalk.yellow(levelOutput);break;case LoggerLevel.ERROR:levelOutput Chalk.red(levelOutput);break;case LoggerLevel.FATAL:levelOutput Chalk.hex(#DD4C35)(levelOutput);break;default:levelOutput Chalk.grey(levelOutput);break;}return ${Chalk.green(typeOutput)}${dateOutput} ${Chalk.yellow(moduleOutput,)}${levelOutput}${positionOutput};}; });// 注入配置 Log4js.configure(config);// 实例化 const logger Log4js.getLogger(); logger.level LoggerLevel.TRACE;export class Logger {static trace(...args) {logger.trace(Logger.getStackTrace(), ...args);}static debug(...args) {logger.debug(Logger.getStackTrace(), ...args);}static log(...args) {logger.info(Logger.getStackTrace(), ...args);}static info(...args) {logger.info(Logger.getStackTrace(), ...args);}static warn(...args) {logger.warn(Logger.getStackTrace(), ...args);}static warning(...args) {logger.warn(Logger.getStackTrace(), ...args);}static error(...args) {logger.error(Logger.getStackTrace(), ...args);}static fatal(...args) {logger.fatal(Logger.getStackTrace(), ...args);}static access(...args) {const loggerCustom Log4js.getLogger(http);loggerCustom.info(Logger.getStackTrace(), ...args);}// 日志追踪可以追溯到哪个文件、第几行第几列static getStackTrace(deep 2): string {const stackList: StackTrace.StackFrame[] StackTrace.getSync();const stackInfo: StackTrace.StackFrame stackList[deep];const lineNumber: number stackInfo.lineNumber;const columnNumber: number stackInfo.columnNumber;const fileName: string stackInfo.fileName;const basename: string Path.basename(fileName);return ${basename}(line: ${lineNumber}, column: ${columnNumber}): \n;} }中间件文件src/middleware/logger.middleware.ts import { Request, Response } from express; import { Logger } from ../utils/log4js;// 函数式中间件 export function logger(req: Request, res: Response, next: () any) {const code res.statusCode; // 响应状态码next();// 组装日志信息const logFormat 请求参数Request original url: ${req.originalUrl}Method: ${req.method}IP: ${req.ip}Status code: ${code}Parmas: ${JSON.stringify(req.params)}Query: ${JSON.stringify(req.query)}Body: ${JSON.stringify(req.body,)} \n ;// 根据状态码进行日志类型区分if (code 500) {Logger.error(logFormat);} else if (code 400) {Logger.warn(logFormat);} else {Logger.access(logFormat);Logger.log(logFormat);} }main.ts import { logger } from ./middleware/logger.middleware;async function bootstrap() {const app await NestFactory.create(AppModule, { logger: console });app.use(logger); } bootstrap(); 然后就可以记录日志辣~稍微详细一点的可以参考这位老哥的https://blog.csdn.net/fwzzzzz/article/details/116160816
http://www.tj-hxxt.cn/news/223950.html

相关文章:

  • 怎么建网站新手入门wordpress运行php 404
  • 重庆公司免费网站建设建立一个企业网站需要多少钱
  • cms网站建站流程泰兴做网站
  • 厦门建设网站企业唐山如何做百度的网站
  • 沈阳建设厅官方网站自己做网站能否赚钱6
  • 徐州铜山区建设局网站江西赣州
  • 新一站保险网客户评论 网站建设
  • 企业网站制作建设的框架有哪几种手机报价大全
  • 创意智能产品设计seo软件哪个好
  • 畅想网络网站建设推广九江建设网站
  • 成都分想设计公司网站扬州网站建设小程序
  • c 做网站如何调用dll友情链接交易
  • 实验一 电子商务网站建设与维护上海本地宝
  • 网站被挂马怎么处理衡阳seo优化推荐
  • 航运网站建设计划书现在网站开发都什么技术
  • 网站建设xywlcnseo难不难学
  • 成都网站外包优化公司银川网站建站公司
  • 陕西响应式网站建设wordpress分类目录404
  • 下列关于网站开发中网页上传简约风ppt模板免费
  • 石家庄网站建设费用广州网络营销推广公司
  • asp.net网站开发模板蒲公英路由器登录地址
  • 培训网站系统建设手机建站模版
  • 企业网站推广在哪里办广州360公司总部
  • 四川建设主管部门网站网站建设思路设计
  • 什么网站可以接设计方案国外家具设计网站
  • 能不能同行网站做站长统计个人做网站 私活
  • 企业网站php开源系统杭州专业网站建设公司哪家好
  • 中国建设银行悦生活网站食品公司网站设计项目
  • 网站分类导航代码做旅游网站的目的和意义
  • 小米网站开发语言免费设计app的网站建设