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

nest.js使用nest-winston日志一

nest-winston文档

nest-winston - npm

参考:nestjs中winston日志模块使用 - 浮的blog - SegmentFault 思否

安装

cnpm install --save nest-winston winstoncnpm install winston-daily-rotate-file

在main.ts中

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ResponseInterceptor } from './common/response.interceptor'
import { HttpExceptionFilter } from './common/http-exception.filter';
import { createLogger } from 'winston';
import * as winston from 'winston';
import { WinstonModule, utilities, } from 'nest-winston'
import 'winston-daily-rotate-file';async function bootstrap() {//日志const instance = createLogger({transports: [new winston.transports.Console({level: 'info',format: winston.format.combine(winston.format.timestamp(),utilities.format.nestLike())}),new winston.transports.DailyRotateFile({level: 'error',dirname: 'logs',filename: 'error-%DATE%.log',datePattern: 'YYYY-MM-DD',zippedArchive: true,maxSize: '10m',maxFiles: '14d',format: winston.format.combine(winston.format.timestamp(),winston.format.simple(),),}),new winston.transports.DailyRotateFile({level: 'info',dirname: 'logs',filename: 'info-%DATE%.log',datePattern: 'YYYY-MM-DD',zippedArchive: true,maxSize: '10m',maxFiles: '14d',format: winston.format.combine(winston.format.timestamp(),winston.format.simple(),),}),]})const logger = WinstonModule.createLogger({instance})const app = await NestFactory.create(AppModule, {logger});app.setGlobalPrefix('api');//路由前缀//全局响应拦截app.useGlobalInterceptors(new ResponseInterceptor());//全局异常拦截 只能有一个 写入日志app.useGlobalFilters(new HttpExceptionFilter(logger));await app.listen(7000);
}
bootstrap();

其中自定义异常 自动写入日志记录

app.useGlobalFilters(new HttpExceptionFilter(logger));
import { ExceptionFilter, Catch, ArgumentsHost, HttpException, LoggerService } from '@nestjs/common';
import { Request, Response } from 'express';
/*** 封装 自定义 http 异常拦截*/@Catch(HttpException)
export class HttpExceptionFilter implements ExceptionFilter {//把错误异常自动加到日志constructor(private logger: LoggerService ) {}catch(exception: HttpException, host: ArgumentsHost) {const ctx = host.switchToHttp();// 请求和响应对象const response = ctx.getResponse<Response>();const request = ctx.getRequest<Request>();// http状态码const status = exception.getStatus();this.logger.error(exception.message, exception.stack);let json = {code: status,msg: exception.message || exception.name, //exception.getResponse(),timestamp: new Date().toISOString(),path: request.url,method: request.method,}response.status(status).json(json);}
}

控制台打印结果

自动生成的logs文件夹

如果在生产环境,logs文件夹,要自定路径。

相关文章:

nest.js使用nest-winston日志一

nest-winston文档 nest-winston - npm 参考&#xff1a;nestjs中winston日志模块使用 - 浮的blog - SegmentFault 思否 安装 cnpm install --save nest-winston winstoncnpm install winston-daily-rotate-file 在main.ts中 import { NestFactory } from nestjs/core; im…...

LeetCode刷题笔记之二叉树(四)

一、二叉搜索树的应用 1. 700【二叉搜索树中的搜索】 题目&#xff1a; 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 null 。代码&a…...

【MATLAB源码-第150期】基于matlab的开普勒优化算法(KOA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 开普勒优化算法&#xff08;Kepler Optimization Algorithm, KOA&#xff09;是一个虚构的、灵感来自天文学的优化算法&#xff0c;它借鉴了开普勒行星运动定律的概念来设计。在这个构想中&#xff0c;算法模仿行星围绕太阳的…...

最佳实践:Websocket 长连接状态如何保持

WebSocket 是一种支持通过单个 TCP 连接进行全双工通信的协议&#xff0c;相较于传统的 HTTP 协议&#xff0c;它更适合需要实时交互的应用场景。此协议在现代 Web 应用中扮演着至关重要的角色&#xff0c;尤其是在需要实时更新和通信的场合下维持持久连接。本文将探讨 WebSock…...

Unity AStar寻路算法与导航

在游戏开发中&#xff0c;寻路算法是一个非常重要的部分&#xff0c;它决定了游戏中角色的移动路径。Unity作为一款流行的游戏开发引擎&#xff0c;提供了许多内置的寻路算法&#xff0c;其中最常用的就是AStar算法。AStar算法是一种基于图的搜索算法&#xff0c;通过启发式搜索…...

JavaScript最新实现城市级联操作,json格式的数据

前置知识&#xff1a; <button onclick"doSelect()">操作下拉列表</button><hr>学历&#xff1a;<select id"degree"><option value"0">--请选择学历--</option><option value"1">专科<…...

SD NAND:为车载显示器注入智能与安全的心脏

SD NAND 在车载显示器的应用 在车载显示器上&#xff0c;SD NAND&#xff08;Secure Digital NAND&#xff09;可以有多种应用&#xff0c;其中一些可能包括&#xff1a; 导航数据存储&#xff1a; SD NAND 可以用于存储地图数据、导航软件以及车载系统的相关信息。这有助于提…...

矩阵的对角化

概述 对角化矩阵是线性代数中的一个重要概念&#xff0c;它涉及将一个方阵转换成一个对角阵&#xff0c;这个对角阵与原矩阵相似&#xff0c;其主要对角线上的元素为原矩阵的特征值。这样的转换简化了很多数学问题&#xff0c;特别是线性动力系统的求解和矩阵的幂运算。下面是…...

React编写组件时,如何省略.tsx后缀

省略.tsx后缀 当tsconfig.json配置了&#xff0c;需要重启后才会生效 {"compilerOptions": {"allowJs": true,"jsx": "react-jsx",} }当进行以上配置后&#xff0c;导入组件时添加后缀&#xff0c;Eslint报错如下&#xff1a; An im…...

移动端的React项目中如何配置自适应和px转rem

创建项目 create-react-app project-name 启动项目 npm start 下载自适应和px转rem的插件 自适应的&#xff1a; npm install lib-flexible --save px转rem的&#xff1a;npm install postcss-pxtorem5.1.1 --save-dev 创建craco.config.js配置文件 在package.json中…...

TypeScript 结合 React 开发时候 , React.FunctionComponent 解释

在 TypeScript 结合 React 开发时&#xff0c;React.FC&#xff08;或 React.FunctionComponent&#xff09;是一个泛型类型&#xff0c;它用于定义函数组件的类型。这个类型定义了函数组件的结构和预期行为&#xff0c;并且提供了泛型支持&#xff0c;以便你可以指定组件 prop…...

2280. 最优标号(最小割,位运算)#困难,想不到

活动 - AcWing 给定一个无向图 G(V,E)&#xff0c;每个顶点都有一个标号&#xff0c;它是一个 [0,2^31−1] 内的整数。 不同的顶点可能会有相同的标号。 对每条边 (u,v)&#xff0c;我们定义其费用 cost(u,v) 为 u 的标号与 v 的标号的异或值。 现在我们知道一些顶点的标号…...

RestTemplate启动问题解决

⭐ 作者简介&#xff1a;码上言 ⭐ 代表教程&#xff1a;Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容&#xff1a;个人博客系统 ⭐我的文档网站&#xff1a;http://xyhwh-nav.cn/ RestTemplate启动问题解决 问题&#xff1a;在SpringCloud架构项目中配…...

Docker部署前后端服务示例

使用Docker部署js前端 1.创建Dockerfile 在项目跟目录下创建Dockerfile文件&#xff1a; # 使用nginx作为基础镜像 FROM nginx:1.19.1# 指定工作空间 WORKDIR /data/web# 将 yarn build 打包后的build文件夹添加到工作空间 ADD build build# 将项目必要文件添加到工作空间&a…...

方格分割644--2017蓝桥杯

1.用dfs解决&#xff0c;首先这题的方格图形就很像一个走迷宫的类型&#xff0c;迷宫想到dfs&#xff0c;最中心点视为起点&#xff0c;起点有两个小人在这个方格里面对称行动&#xff0c;直到走出迷宫&#xff08;一个人走出来了另一个人就也走出来了&#xff0c;而走过的点会…...

接口测试用例设计注意点

API接口测试&#xff1a; 1>根据接口文档&#xff0c;检查接口调用方法post/get&#xff0c;状态码、请求值、返回值 2>对请求参数做容错、边界值、等价类校验 3>功能可用&#xff0c;用户友好 4>密码加密&#xff0c;http明文&#xff0c;https协议密文 5>业务…...

学习linux从0到工程师(命令)-4

基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作系统信息 arch 显示机器的处理器架构 uname -m 显示机器…...

【树莓派系统配置+python3.8+环境配置踩坑点汇总】raspberrypi

最近又开始搞树莓派的深度学习模型。很多windows端的环境需要在树莓派上重新部署&#xff0c;中间出现了非常多的问题。主要以各种库的下载安装为主要。 首先&#xff0c;第一个问题&#xff1a; 树莓派系统烧录之后&#xff0c;默认apt一般需要升级看&#xff0c;而默认下载…...

CTFHUB--文件包含漏洞--RCE

文件包含漏洞 文件包含漏洞也是一种注入型漏洞&#xff0c;其本质就是输入一段用户能够控制的脚本或者代码&#xff0c;并让服务端执行。有时候由于网站功能需求&#xff0c;会让前端用户选择要包含的文件&#xff0c;而开发人员又没有对要包含的文件进行安全考虑&#xff0c;…...

Android 解决引入的三方库中类名冲突问题

参考&#xff1a; Android开发——如何解决三方库中的类名冲突问题_android 类冲突-CSDN博客 Android 解决 jar/aar 包类名冲突 - 简书 实操步骤 1.提前安装好unzip-5.51-bin&#xff0c;proguard-7.4.0&#xff0c;jarjar-1.4软件 2.解压包名冲突的 AAR 文件 进入到需要修…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...