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
});
不能生成以日期命名的日志
当然可以!下面是一个关于如何使用 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("直接输出到控制台");
解释
- 引入模块:首先引入
log4js
模块。 - 配置日志:
appenders
数组定义了不同的日志输出方式。这里我们定义了两个 appender:一个是控制台输出,另一个是按日期生成日志文件。type: 'dateFile'
表示使用按日期分割的日志文件插件。filename: 'logs/app-'
定义了日志文件的基本名称。pattern: 'yyyy-MM-dd.log'
定义了按日期生成日志文件的模式,这样每天都会生成一个新的日志文件。maxLogSize
和backups
分别定义了单个日志文件的最大大小以及保留的旧日志文件数量。compress
设置为true
表示压缩旧日志文件。category
定义了日志类别,可以根据需要设置多个不同的类别。
- 获取 logger 实例:通过
log4js.getLogger('app')
获取一个 logger 实例。 - 记录日志:使用
logger.info
和logger.error
方法记录日志信息。 - 控制台输出:使用
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
配置也正确。你需要将 maxLogSize
和 backups
进行合理设置,以防止日志文件过大或过多。
以下是调整后的示例代码:
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
,这表示每天生成一个新日志文件。 - maxLogSize 和 backups: 控制单个日志文件的大小以及保留旧日志文件的数量。
- compress: 设置为
true
表示当达到备份数量时,会自动压缩旧日志文件。 - alwaysIncludePattern: 当设置为
true
时,会包含时间戳在压缩文件名中,以便于区分不同日期的日志文件。
这样配置后,你应该能够看到按日期生成的日志文件了。