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

简介: 安装依赖:使用 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日志并进行多维度分析。
相关文章
|
2天前
|
JavaScript 前端开发
autox.js如何打印日志?
autox.js如何打印日志?
|
7天前
|
关系型数据库 MySQL 数据库
mysql数据库bin-log日志管理
mysql数据库bin-log日志管理
|
7天前
|
存储 关系型数据库 数据库
关系型数据库文件方式存储LOG FILE(日志文件)
【5月更文挑战第11天】关系型数据库文件方式存储LOG FILE(日志文件)
63 1
|
8天前
|
运维 监控 安全
Java一分钟之-Log4j与日志记录的重要性
【5月更文挑战第16天】Log4j是Java常用的日志框架,用于灵活地记录程序状态和调试问题。通过设置日志级别和过滤器,可避免日志输出混乱。为防止日志文件过大,可配置滚动策略。关注日志安全性,如Log4j 2.x的CVE-2021-44228漏洞,及时更新至安全版本。合理使用日志能提升故障排查和系统监控效率。
68 0
|
9天前
|
C++
JNI Log 日志输出
JNI Log 日志输出
54 1
|
9天前
|
存储 运维 大数据
聊聊日志硬扫描,阿里 Log Scan 的设计与实践
泛日志(Log/Trace/Metric)是大数据的重要组成,伴随着每一年业务峰值的新脉冲,日志数据量在快速增长。同时,业务数字化运营、软件可观测性等浪潮又在对日志的存储、计算提出更高的要求。
255 6
|
9天前
|
XML Java Maven
Springboot整合与使用log4j2日志框架【详解版】
该文介绍了如何在Spring Boot中切换默认的LogBack日志系统至Log4j2。首先,需要在Maven依赖中排除`spring-boot-starter-logging`并引入`spring-boot-starter-log4j2`。其次,创建`log4j2-spring.xml`配置文件放在`src/main/resources`下,配置包括控制台和文件的日志输出、日志格式和文件切分策略。此外,可通过在不同环境的`application.yml`中指定不同的log4j2配置文件。最后,文章提到通过示例代码解释了日志格式中的各种占位符含义。
|
9天前
|
运维 监控 Go
Golang深入浅出之-Go语言中的日志记录:log与logrus库
【4月更文挑战第27天】本文比较了Go语言中标准库`log`与第三方库`logrus`的日志功能。`log`简单但不支持日志级别配置和多样化格式,而`logrus`提供更丰富的功能,如日志级别控制、自定义格式和钩子。文章指出了使用`logrus`时可能遇到的问题,如全局logger滥用、日志级别设置不当和过度依赖字段,并给出了避免错误的建议,强调理解日志级别、合理利用结构化日志、模块化日志管理和定期审查日志配置的重要性。通过这些实践,开发者能提高应用监控和故障排查能力。
95 1
|
9天前
|
弹性计算 运维 Shell
|
9天前
|
Java
log4j异常日志过滤规则配置
log4j异常日志过滤规则配置
104 0