基于nodejs的vue项目中使用log4js将日志输入到文件

一、前言

在项目开发中常需要打印一些log,常规的console.log()只是将信息反映在了浏览器的控制台中,是“一次性”的信息。为了查看历史日志,就需要做日志记录留存。
实际项目是基于nodejs的vue项目,使用的日志记录工具是4.1.0版本的log4js。具体需求是为了记录常规日志,剥离错误日志,在有某些功能运行出错时快速通过记录的日志信息定位问题。

二、实现log4js记录日志(以日期划分日志文件的方式)

1、安装log4js

1
2
3
4
5
// 注意:如果只执行npm install XXX,没有指定安装到那种环境下的“后缀”,就会发现node-modules中安装了,但是package.json中没有的情况。
// 1、保存到开发依赖(devDependencies):
npm install log4js @4.1.0 --save-dev
// 2、保存到生产依赖(dependencies):
npm install log4js @4.1.0 --save

2、配置log4js

log4js应用方式类似于一个“公共函数”,需要对其“配置、声明”,由于我要在很多地方使用,所以新建了一个单独的js文件对其进行配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 文件名:log4js.js
var log4js = require('log4js');
log4js.configure({
    appenders: {
        production: {
            type: 'dateFile',       // 日志输出类型,dateFile表示输出到文件
            filename: 'demo.log',   // 输出到文件的文件路径,注意,是路径而不是文件名!
            alwaysIncludePattern: true,    // 日志文件是否展示预设的模式
            keepFileExt: true,   // 日志文件是否始终保持后缀
            daysToKeep: 30,    // 日志保存时间,默认值为0,表示一直保存
        }
    },
    categories: {
        default: { appenders: [ 'production' ], level: 'info' }
    }
});
var logger = log4js.getLogger();
// 下面这行代码是测试代码,我将这个js文件引入到了html文件中。如果一切正常,启动项目后你会看到项目根目录下生成了一个类似于名为“demo.2020-10-20.log”的日志文件,里面就有你这行输出的信息。
logger.info('this is a info3');

3、应用

在“2、配置log4js”中定义的logger变量相当于一个“函数名”,当你在全局引入了这个js之后,你就可以在你项目代码的任何地方用

1
logger.info('XXX');

记录输出你想要的信息到指定的文件中了

三、说明

1、log4js默认的日志级别

all

2、log4js支持的输出形式(类型)

log4js支持多种日志输出形式,打印到控制台、输出到文件、传输到服务器、以邮件形式发送日志等。如:console、dateFile、file、stderr等等。

参考链接
log4js-node
log4js日志管理模块配置
log4js 将日志输出到文件

欢迎大家一起讨论、学习。