安装log4js模块
npm install --save log4js
log4js级别:大小写不敏感
ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < MARK < OFF
log4js属性
1、appenders (object):至少有一个type **设置日志,包括输出路径,是否在控制台显示
2、categories(object):管理 appenders[1~n]
包含两个属性
level(String)
appenders(Array)
基础使用
var log4js=require('log4js');
var logger = log4js.getLogger();
logger.level = 'debug';
logger.debug("Some debug messages");
log输出到文件中
var log4js=require('log4js');
log4js.configure({
appenders: {
out: { type: 'stdout' },//设置是否在控制台打印日志
info: { type: 'file', filename: './logs/info.log' }
},
categories: {
default: { appenders: [ 'out', 'info' ], level: 'info' }//去掉'out'。控制台不打印日志
}
});
var logger = log4js.getLogger('info');
logger.info("~~~info~~~~");
log输出到文件中:多个文件,同一level
var log4js=require('log4js');
log4js.configure({
appenders: {
out: { type: 'stdout' },//设置是否在控制台打印日志
info: { type: 'file', filename: './logs/info.log' },
info_2: { type: 'file', filename: './logs/info_2.log' }
},
categories: {
default: { appenders: [ 'out', 'info', 'info_2' ], level: 'info' }//去掉'out'。控制台不打印日志
}
});
var logger = log4js.getLogger('info');
logger.info("~~~info~~~~");
var logger_2 = log4js.getLogger('info_2');
logger_2.info("~~~info~~~~");
log输出到文件中:多个文件,不同level
var log4js=require('log4js');
log4js.configure({
appenders: {
out: { type: 'stdout' },//设置是否在控制台打印日志
info: { type: 'file', filename: './logs/info.log' },
just-errors: { type: 'file', filename: './logs/error.log' },
'error': { type: 'logLevelFilter', appender: 'just-errors', level: 'error' }
},
categories: {
default: { appenders: [ 'out', 'info','error' ], level: 'info' }//去掉'out'。控制台不打印日志
}
});
var LogFile = log4js.getLogger();
LogFile.info('You can find logs-files in the log-dir');
var LogFile_info = log4js.getLogger('info');
LogFile_info.info('~~~~~~~info log~~~~~~~~~');
var LogFile_just-errors = log4js.getLogger('error');
LogFile_just.error('~~~~~~~error log~~~~~~~~~');
console.log("log_start end!");
示例
/**
* npm install log4js
* 源码及文档地址:https://github.com/nomiddlename/log4js-node
*/
var log4js = require('log4js');
/**
* 第一种:
* configure方法为配置log4js对象,内部有levels、appenders、categories三个属性
* levels:
* 配置日志的输出级别,共ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<MARK<OFF八个级别,default level is OFF
* 只有大于等于日志配置级别的信息才能输出出来,可以通过category来有效的控制日志输出级别
* appenders:
* 配置文件的输出源,一般日志输出type共有console、file、dateFile三种
* console:普通的控制台输出
* file:输出到文件内,以文件名-文件大小-备份文件个数的形式rolling生成文件
* dateFile:输出到文件内,以pattern属性的时间格式,以时间的生成文件
* replaceConsole:
* 是否替换控制台输出,当代码出现console.log,表示以日志type=console的形式输出
*
*/
log4js.configure({
levels: {
'log_file' : 'info'
},
appenders : [
{
type : 'console',
category: "console"
},
{
type : 'stdout'
},
{
type : 'file',
filename: __dirname + '/logs/test.log',//文件目录,当目录文件或文件夹不存在时,会自动创建
maxLogSize : 10,//文件最大存储空间,当文件内容超过文件存储空间会自动生成一个文件test.log.1的序列自增长的文件
backups : 3,//default value = 5.当文件内容超过文件存储空间时,备份文件的数量
//compress : true,//default false.是否以压缩的形式保存新文件,默认false。如果true,则新增的日志文件会保存在gz的压缩文件内,并且生成后将不被替换,false会被替换掉
encoding : 'utf-8',//default "utf-8",文件的编码
category : 'log_file'
},
{
type: "dateFile",
filename: __dirname + '/logs/dateFileTest',//您要写入日志文件的路径
alwaysIncludePattern: true,//(默认为false) - 将模式包含在当前日志文件的名称以及备份中
//compress : true,//(默认为false) - 在滚动期间压缩备份文件(备份文件将具有.gz扩展名)
pattern: "-yyyy-MM-dd-hh.log",//(可选,默认为.yyyy-MM-dd) - 用于确定何时滚动日志的模式。格式:.yyyy-MM-dd-hh:mm:ss.log
encoding : 'utf-8',//default "utf-8",文件的编码
category:"log_date",
}
],
replaceConsole: true
});
/**
* 第二种
* appenders:
* 一个JS对象,key为上面的category,value是一些其他属性值
* categories:
* default表示log4js.getLogger()获取找不到对应的category时,使用default中的日志配置
*
*/
/*
log4js.configure(
{
appenders: {
file: {
type : 'file',
filename: __dirname + '/logs/test.log',//文件目录,当目录文件或文件夹不存在时,会自动创建
maxLogSize : 10,//文件最大存储空间,当文件内容超过文件存储空间会自动生成一个文件test.log.1的序列自增长的文件
backups : 3,//当文件内容超过文件存储空间时,备份文件的数量
//compress : true,//是否以压缩的形式保存新文件,默认false。如果true,则新增的日志文件会保存在gz的压缩文件内,并且生成后将不被替换,false会被替换掉
encoding : 'utf-8',//default "utf-8",文件的编码
category : 'log_file'
numBackups: 5, // keep five backup files
compress: true, // compress the backups
encoding: 'utf-8',
},
dateFile: {
type: 'dateFile',
filename: 'more-important-things.log',
pattern: 'yyyy-MM-dd-hh',
compress: true
},
out: {
type: 'stdout'
}
},
categories: {
default: { appenders: ['file', 'dateFile', 'out'], level: 'trace' }
}
}
);
*/
var logger = log4js.getLogger('log_file');
var logger1 = log4js.getLogger('log_date');
logger.info("this is a log4js test1111111111111!");
logger1.info("this is a log4js test1111111111111!");
console.log("test test!!");
var log4js = require('log4js');
log4js.configure({
appenders: {
cd: { //人
type: 'file',
filename: __dirname+ '/logs/out.log' ,
maxLogSize : '2M',//文件最大存储空间,当文件内容超过文件存储空间会自动生成一个文件test.log.1的序列自增长的文件
backups : 7,//当文件内容超过文件存储空间时,备份文件的数量
//compress : true,//是否以压缩的形式保存新文件,默认false。如果true,则新增的日志文件会保存在gz的压缩文件内,并且生成后将不被替换,false会被替换掉
encoding : 'utf-8',//default "utf-8",文件的编码
// category : 'log_file',
numBackups: 7, // keep five backup files
// compress: true, // compress the backups
encoding: 'utf-8'
}
},
categories: { default: { appenders: ['cd'], level: 'ALL' } }, //levels are ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, MARK,OFF
replaceConsole: true
});
var logger = log4js.getLogger("cd");
var MB = '';
for (var i = 0; i < 1024 * 1024 ; ++i)
MB += '1';
logger.info(MB)
logger.debug(MB)
© 著作权归作者所有
文章评论(0)