首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

winston log4js

WinstonLog4js 都是流行的 JavaScript 日志库,用于在 Node.js 应用程序中记录日志信息。它们各自有不同的特点和优势,适用于不同的场景。

Winston

基础概念: Winston 是一个灵活的日志库,支持多种传输方式(transports),如文件、控制台、HTTP 等。它允许开发者自定义日志级别、格式和输出。

优势

  • 支持多种传输方式。
  • 可以自定义日志级别和格式。
  • 有丰富的插件生态系统。
  • 支持日志轮转。

类型

  • 文件日志
  • 控制台日志
  • HTTP 日志
  • 自定义传输

应用场景

  • 需要灵活配置日志输出的复杂应用。
  • 需要日志轮转功能的大型应用。

示例代码

代码语言:txt
复制
const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

if (process.env.NODE_ENV !== 'production') {
  logger.add(new winston.transports.Console({
    format: winston.format.simple()
  }));
}

logger.info('Hello World');
logger.error('An error occurred');

Log4js

基础概念: Log4js 是一个功能强大的日志库,支持多种日志级别、布局和附加器(appenders)。它允许开发者通过配置文件来管理日志输出。

优势

  • 支持多种日志级别和布局。
  • 有强大的配置文件支持。
  • 支持多种附加器,如文件、控制台、数据库等。
  • 支持日志轮转和归档。

类型

  • 文件日志
  • 控制台日志
  • 数据库日志
  • 自定义附加器

应用场景

  • 需要通过配置文件管理日志的应用。
  • 需要复杂日志布局和附加器的应用。

示例代码

代码语言:txt
复制
const log4js = require('log4js');

log4js.configure({
  appenders: {
    file: { type: 'file', filename: 'error.log' },
    console: { type: 'console' }
  },
  categories: {
    default: { appenders: ['file', 'console'], level: 'debug' }
  }
});

const logger = log4js.getLogger();

logger.debug('This is a debug message');
logger.info('This is an info message');
logger.error('This is an error message');

常见问题及解决方法

问题:日志文件过大,如何解决?

原因:日志文件没有进行轮转,导致单个文件过大。

解决方法

  • 使用 Winston 或 Log4js 的日志轮转功能。
  • 配置日志文件的最大大小和保留天数。

示例代码(Winston)

代码语言:txt
复制
const { createLogger, transports, format } = require('winston');
const { combine, timestamp, printf } = format;

const myFormat = printf(({ level, message, timestamp }) => {
  return `${timestamp} ${level}: ${message}`;
});

const logger = createLogger({
  format: combine(
    timestamp(),
    myFormat
  ),
  transports: [
    new transports.File({
      filename: 'app.log',
      maxsize: 10 * 1024 * 1024, // 10MB
      maxFiles: 5,
      tailable: true
    })
  ]
});

示例代码(Log4js)

代码语言:txt
复制
log4js.configure({
  appenders: {
    file: { type: 'dateFile', filename: 'app.log', pattern: '.yyyy-MM-dd', keepFileExt: true, compress: true }
  },
  categories: {
    default: { appenders: ['file'], level: 'debug' }
  }
});

通过以上配置,日志文件会在达到指定大小后自动轮转,并保留一定数量的旧日志文件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

搭建node服务(一):日志处理

一、技术选型 选择了3种主流的技术进行对比: 1.1 log4js log4js是一种node日志管理工具,可以将自定义格式的日志输出到各种渠道。...1.2 winston winston也是一种非常流行的node日志管理工具,支持多传输。默认输出格式为json,也可以自定义输出格式。...如果想要对日志进行切割还需要使用 winston-daily-rotate-file 模块。 1.3 PM2 PM2实际是node进程管理工具,具有性能监控、进程守护、负载均衡、日志管理等功能。...三、使用log4js 3.1 安装 npm install log4js --save 或者 yarn add log4js 3.2 简单使用 下面示例利用log4js创建日志对象logger,通过调用...四、总结 本章介绍了log4js的基本使用,并给出了常用功能的使用示例,要了解log4js的更多功能,请参考log4js的官网:https://log4js-node.github.io/log4js-node

1K20

搭建node服务(1):日志处理

一、技术选型 选择了3种主流的技术进行对比: 1.1 log4js log4js是一种node日志管理工具,可以将自定义格式的日志输出到各种渠道。...1.2 winston winston也是一种非常流行的node日志管理工具,支持多传输。默认输出格式为json,也可以自定义输出格式。...如果想要对日志进行切割还需要使用 winston-daily-rotate-file 模块。 1.3 PM2 PM2实际是node进程管理工具,具有性能监控、进程守护、负载均衡、日志管理等功能。...三、使用log4js 3.1 安装 npm install log4js --save 或者 yarn add log4js 3.2 简单使用 下面示例利用log4js创建日志对象logger,通过调用...util/log4jsLogger.js const path = require('path'); const log4js = require('log4js'); // 配置log4js log4js.configure

1.4K20
  • 如何使用Winston记录Node.js应用程序

    第三步, 安装和配置Winston 我们现在准备安装和配置Winston。在这一步,我们将探讨作为winston软件包的一些配置选项,并创建一个将信息记录到文件和控制台的记录器。...要安装,请winston运行以下命令: $ cd ~/myApp $ npm install winston 创建一个包含winston配置的config文件夹: $ mkdir ~/myApp/config...现在让我们创建包含我们winston配置的文件,我们将调用它winston.js: $ touch ~/myApp/config/winston.js 接下来,创建一个包含日志文件的文件夹: $ mkdir...首先打开~/myApp/config/winston.js编辑: $ nano ~/myApp/config/winston.js 接下来,需要app-root-path和winston包: ~/myApp.../config/winston'); ... 我们实际使用winston的第一个地方是morgan。我们将使用stream选项,并将其设置为我们在winston配置中创建的流接口。

    5.6K61

    Koa日志中间件封装开发

    ---- 日志中间件开发工具log4js 在node当中没有自带的日志模块,所以需要使用第三方模块 使用模块:log4js 安装: npm i log4js -S logsjs官方文档 日志分类:...对象(logger.js) const getLog = ({env, appLogLevel, dir}, name) => { //log4js基本说明配置项,可自定义设置键名,用于...log4js使用基本配置和流程解析 设置配置项, // 配置项形式 { appenders:{ [自定义key]:{} }, categories:{ }...按需配置,返回配置后的log4js对象,每个属性配置相当于一个不同的log4js配置对象入口;default为默认入口(getLogger()找不到入口时默认使用default) categories...配置 Node.js 之 log4js 完全讲解 学无止境,积累点滴;把小简单变成大简单。

    1.4K30

    iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 记录日志

    日志的作用 显示程序运行状态 帮助开发者排除问题故障 结合专业的日志分析工具(如 ELK )给出预警 关于编写 log 中间件的预备知识 log4js 本项目中的 log 中间件是基于 log4js 2....x 的封装,Log4js 是 Node.js 中一个成熟的记录日志的第三方模块,下文也会根据中间件的使用介绍一些 log4js 的使用方法。...代码实现 安装 log4js 模块 npm i log4js -S log4js 官方简单示例 在 middleware/ 目录下创建 mi-log/demo.js,并贴入官方示例代码: var log4js...log4js 官方复杂示例 替换 mi-log/demo.js 中的代码为如下: const log4js = require('log4js'); log4js.configure({ appenders...打开 /mi-log/logger.js 文件: const log4js = require('log4js'); const methods = ["trace", "debug", "info",

    2K70

    Nest.js 从零到壹系列(四):使用中间件、拦截器、过滤器打造日志系统

    一、日志系统 这里使用的是 log4js,前身是 log4j,如果有写过 Java 的大佬应该不会陌生。...已经有大佬总结了 log4js 的用法,就不在赘述了: 《Node.js 之 log4js 完全讲解》[2] 1....配置 先安装依赖包 $ yarn add log4js stacktrace-js -S 在 config 目录下新建一个文件 log4js.ts,用于编写配置文件: // config/log4js.ts...实例化 有了配置,就可以着手写 log4js 的实例以及一些工具函数了。...总结 本篇介绍了如何使用 log4js 来管理日志,制作中间件和拦截器对入参出参进行记录,以及使用过滤器对异常进行处理。 文中日志的打印格式可以按照自己喜好进行排版,不一定局限于此。

    6.6K73

    Nest.js 实战系列四:使用中间件、拦截器、过滤器打造日志系统

    一、日志系统 这里使用的是 log4js,前身是 log4j,如果有写过 Java 的大佬应该不会陌生。...已经有大佬总结了 log4js 的用法,就不在赘述了: 《Node.js 之 log4js 完全讲解》[2] 1....配置 先安装依赖包 $ yarn add log4js stacktrace-js -S 在 config 目录下新建一个文件 log4js.ts,用于编写配置文件: // config/log4js.ts...实例化 有了配置,就可以着手写 log4js 的实例以及一些工具函数了。...总结 本篇介绍了如何使用 log4js 来管理日志,制作中间件和拦截器对入参出参进行记录,以及使用过滤器对异常进行处理。 文中日志的打印格式可以按照自己喜好进行排版,不一定局限于此。

    5.9K20
    领券