[Nestjs] 使用log4js-node实现日志生成

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 安装依赖:使用 npm 或 yarn 安装 log4js。

安装依赖:使用 npm 或 yarn 安装 log4js


创建日志配置文件:在项目根目录下创建一个名为 log4js.json 的文件,并配置日志输出的格式、级别、路径等信息。以下是一个示例配置:

{
  "appenders": {
    "app": {
      "type": "file",
      "filename": "logs/app.log",
      "maxLogSize": 10485760,
      "backups": 3,
      "layout": {
        "type": "pattern",
        "pattern": "%d{yyyy-MM-dd hh:mm:ss.SSS} [%p] %m"
      }
    },
    "console": {
      "type": "console",
      "layout": {
        "type": "pattern",
        "pattern": "%[[%p]%] %m"
      }
    }
  },
  "categories": {
    "default": {
      "appenders": ["app", "console"],
      "level": "info"
    }
  }
}

上述配置中定义了两个输出器:app 和 console。app 输出到文件 logs/app.log,并配置了最大日志文件大小、备份文件数和日志布局。console 输出到控制台,并设置了简化的日志布局。


创建日志模块:在你的项目中创建一个日志模块,用于处理日志相关的逻辑。


nest generate module logger


创建日志提供者:生成一个日志提供者,用于初始化 log4js 并将其注入到其他模块中。


nest generate provider logger


初始化日志配置:在日志提供者中,初始化 log4js 并加载配置文件。

import { Provider } from '@nestjs/common';
import * as log4js from 'log4js';
const loggerProvider: Provider = {
  provide: 'Logger',
  useFactory: () => {
    log4js.configure('./log4js.json');
    return log4js.getLogger();
  },
};
export default loggerProvider;

使用日志服务:在其他模块中使用 Logger 服务进行日志记录。

import { Controller, Inject } from '@nestjs/common';
import { Logger } from 'log4js';
@Controller('example')
export class ExampleController {
  constructor(
    @Inject('Logger')
    private readonly logger: Logger,
  ) {}
  someMethod() {
    this.logger.debug('Debug message');
    this.logger.info('Info message');
    this.logger.warn('Warn message');
    this.logger.error('Error message');
  }
}

这样,你就在 NestJS 中使用 log4js-node 进行日志记录。你可以通过在代码中调用 logger.debug()logger.info()logger.warn()logger.error() 方法,根据需要记录不同级别的日志信息。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
21天前
|
SQL 运维 监控
Nest.js 实战 (十):使用 winston 打印和收集日志记录
这篇文章介绍了在Nest服务中如何使用Winston记录日志。文章首先强调了日志记录在后台服务中的重要性,接着提到Nest默认的内部日志记录器,并指出可以通过@nestjs/common包中的Logger类来全面控制日志系统的行为。文章还提到,为了在生产环境中实现更高级的日志功能,可以使用如Winston之类的Node.js日志包。接下来,文章介绍了如何在Nest服务中使用Winston记录日志,包括安装相关依赖、创建winston配置文件以及实现简单的日志记录示例。最后,文章指出更高级的自定义日志功能需要读者自己去探索。
Nest.js 实战 (十):使用 winston 打印和收集日志记录
|
8天前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
18天前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
50 9
|
19天前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
55 0
|
19天前
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
42 0
|
22天前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
22天前
|
JavaScript Serverless Linux
函数计算产品使用问题之遇到Node.js环境下的请求日志没有正常输出时,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
26天前
|
存储
【Azure Log A workspace】Azure上很多应用日志收集到Log A workspace后如何来分别各自的占比呢?
【Azure Log A workspace】Azure上很多应用日志收集到Log A workspace后如何来分别各自的占比呢?
|
26天前
|
SQL JavaScript 前端开发
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
|
26天前
|
API
【Azure 应用服务】当在Azure App Service的门户上 Log Stream 日志无输出,需要如何操作让其输出Application Logs呢?
【Azure 应用服务】当在Azure App Service的门户上 Log Stream 日志无输出,需要如何操作让其输出Application Logs呢?