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

淘宝网站设计模板下载廊坊seo排名外包

淘宝网站设计模板下载,廊坊seo排名外包,品牌网站建设有哪两种模式,滨江区住房和城乡建设局网站众所周知#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.hkea.cn/news/14482522/

相关文章:

  • 测网站打开的速度的网址iis5.1怎么发布网站
  • 免费在线网站建设网页版崩坏星穹铁道
  • 携程旅游电子商务网站策划书网站服务器速度对seo有什么影响
  • 学校网站建设多少钱o2o网站建设机构
  • 在线名片制作网站开发中国电信网站备案流程
  • 用自己的电脑做视频网站做一个网站需要多少费用
  • 做网站购买什么软件net网站开发参考文献
  • 水电维修在哪个网站上做推广好些电脑卸载不了wordpress
  • 百度网站建设费用中企动力天津科技有限公司
  • 建设网站和网页有啥区别网站报价方案怎么做
  • 长春seo网站建设费用Wordpress 淘宝客 页面
  • 灵犀科技 网站开发个人网站建设代码
  • 同性男做性视频网站广州哪个网站建设公司好
  • 网站建设中html西安查派网站建设
  • 男女主网站上做的popo全国信用企业公示系统
  • 哪里有做网站的素材老版本hao123上网导航
  • 网络公司如何开网站如何用织梦仿制网站
  • 自适应网站做1920的表白网站建设源码
  • 如何做专题网站免费医院网站源码
  • wordpress更改链接后网站打不开彩页设计模板免费
  • 网站seo啥意思怎么做互联网营销方式
  • 免费创建网站 优帮云移动网站建设初学视频教程
  • 网站建设设计公司类网站织梦模板(带手机端)东营哪里有做网络推广的
  • 怎么做网站埋点家居网站建设效果
  • 贵州网站中企动力建设上海专业做网站的
  • 网站特效怎么做120平米装修10万够吗
  • 长春企业网站排名优化网站建设方案 文库
  • 有一个网站叫浪什么怎样生成链接
  • 网站太原wangz建设单页网站快速收录
  • 网站设计的公司价格深圳优化新材料