Nodejs日志模块Log4如何配置呢

Nodejs日志模块Log4如何配置呢

var log4js = require(‘log4js’);

log4js.configure({ appenders: [ { type: ‘console’ }, { type: ‘dateFile’, filename: ‘logs/pattern_yyyy-MM-dd.log’, //filename: “blah.log”, pattern: “-yyyy-MM-dd”,

    maxLogSize: 1024,
    // "pattern": "-yyyy-MM-dd",
    alwaysIncludePattern: false,

    backups: 4,
    category: 'normal'
},

], replaceConsole: true });

不能生成以日期命名的日志


9 回复

当然可以!下面是一个关于如何使用 log4js 模块来配置日志生成的示例。我们将展示如何生成以日期命名的日志文件,并解决你提到的问题。

如何配置 Node.js 日志模块 Log4

首先,确保你已经安装了 log4js 模块。你可以通过以下命令来安装:

npm install log4js

接下来,我们需要配置 log4js 来生成以日期命名的日志文件。以下是具体的配置步骤和示例代码:

示例代码

// 引入 log4js 模块
var log4js = require('log4js');

// 配置 log4js
log4js.configure({
    appenders: [
        { type: 'console' },  // 控制台输出
        {
            type: 'dateFile',  // 使用 dateFile 插件
            filename: 'logs/app-',  // 日志文件的基础名称
            pattern: 'yyyy-MM-dd.log',  // 按日期生成日志文件
            maxLogSize: 1024 * 1024,  // 单个日志文件的最大大小为 1MB
            backups: 3,  // 保留3个旧日志文件
            compress: true,  // 压缩旧日志文件
            category: 'app'  // 日志类别
        }
    ],
    replaceConsole: true  // 替换 console 对象,使得 console.log 等同于 log4js 的 info 级别
});

// 获取 logger 实例
var logger = log4js.getLogger('app');

// 使用 logger 记录日志
logger.info("这是第一条信息日志");
logger.error("这是第一条错误日志");

// 输出到控制台
console.log("直接输出到控制台");

解释

  1. 引入模块:首先引入 log4js 模块。
  2. 配置日志
    • appenders 数组定义了不同的日志输出方式。这里我们定义了两个 appender:一个是控制台输出,另一个是按日期生成日志文件。
    • type: 'dateFile' 表示使用按日期分割的日志文件插件。
    • filename: 'logs/app-' 定义了日志文件的基本名称。
    • pattern: 'yyyy-MM-dd.log' 定义了按日期生成日志文件的模式,这样每天都会生成一个新的日志文件。
    • maxLogSizebackups 分别定义了单个日志文件的最大大小以及保留的旧日志文件数量。
    • compress 设置为 true 表示压缩旧日志文件。
    • category 定义了日志类别,可以根据需要设置多个不同的类别。
  3. 获取 logger 实例:通过 log4js.getLogger('app') 获取一个 logger 实例。
  4. 记录日志:使用 logger.infologger.error 方法记录日志信息。
  5. 控制台输出:使用 console.log 输出普通文本到控制台。

希望这个示例能够帮助你正确配置 log4js 并生成以日期命名的日志文件。


我在项目中也遇到了同样的问题,匹配到秒或者分的pattern可以自动生成新文件,可是,我改成yyyy-mm-dd的格式后,第二天启动项目,依然在老文件中追加日志,不会自动生成新的日志文件.

同样 求助!!

同样遇到这个问题。。

将alwaysIncludePattern修改为true就可以了,生成格式如access.log-2014-06-05, 看起来有点别扭,至于生成access_2014-06-05.log格式的文件暂未找到方法 log4js.configure({ appenders: [ { type: ‘dateFile’, absolute: true, filename: __dirname + ‘./logs/access.log’, maxLogSize: 1024 * 1024, backup: 3, pattern: “-yyyy-MM-dd”, alwaysIncludePattern: true, category: ‘normal’ } ], replaceConsole: true });

把 filename: __dirname + ‘./logs/access’, pattern:’"-yyyy-MM-dd.log’

这样就行了

想问下里面的 backups 是拿来干嘛的?

可以试试: { type: ‘dateFile’, filename: ‘logs/log’, pattern: ‘_yyyy-MM-dd.log’, alwaysIncludePattern: true, category: ‘dateFileLog’ }

{
  type: 'dateFile',
  filename: state.LogDir + '/octoo.log', // 需要手动建好目录
  // maxLogSize: 1024, // 只在 type: 'file' 中才支持
  backups: 3, // 默认为5,指定了pattern之后backups参数无效了,除非pattern是小于backups的数字,原理是不指定pattern时备份的文件是在文件名后面加'.n'的数字,n从1开始自增
  // pattern: '.yyyy-MM-dd', // 指定pattern后无限备份
  // alwaysIncludePattern: false, // 不指定pattern时若为true会使用默认值'.yyyy-MM-dd'
  category: 'octoo'
}

根据你的描述,你想要配置Log4js以生成按日期命名的日志文件。当前的配置中,dateFile 插件并没有正确地生成日期命名的日志文件。我们可以通过调整 dateFile 的配置来实现这一目标。

首先,确保你的 filename 配置正确,并且 pattern 配置也正确。你需要将 maxLogSizebackups 进行合理设置,以防止日志文件过大或过多。

以下是调整后的示例代码:

var log4js = require('log4js');

log4js.configure({
    appenders: [
        { type: 'console' },
        {
            type: 'dateFile',
            filename: 'logs/access', // 日志文件的基础名称
            pattern: '-yyyy-MM-dd.log', // 每天生成一个新的日志文件
            maxLogSize: 1024 * 1024, // 每个日志文件最大为1MB
            backups: 3, // 保留3个旧日志文件
            compress: true, // 压缩旧日志文件
            alwaysIncludePattern: true, // 在压缩时包含模式
            category: 'normal'
        }
    ],
    replaceConsole: true
});

const logger = log4js.getLogger('normal');
logger.trace('Some trace information');
logger.debug('Some debug information');
logger.info('Some info information');
logger.warn('Some warn information');
logger.error('Some error information');

解释:

  • filename: 设置为 logs/access,表示所有日期的日志文件都将存储在这个目录下。
  • pattern: 设置为 -yyyy-MM-dd.log,这表示每天生成一个新日志文件。
  • maxLogSizebackups: 控制单个日志文件的大小以及保留旧日志文件的数量。
  • compress: 设置为 true 表示当达到备份数量时,会自动压缩旧日志文件。
  • alwaysIncludePattern: 当设置为 true 时,会包含时间戳在压缩文件名中,以便于区分不同日期的日志文件。

这样配置后,你应该能够看到按日期生成的日志文件了。

回到顶部