node.js 在节点 js 中使用 log4js 将日志写入文件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/22401319/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
write logs in file using log4js in node js
提问by Mahendra
my code is:
我的代码是:
log4js.loadAppender('file');
log4js.addAppender(log4js.appenders.file('logs/cheese.log'), 'cheese');
logger.setLevel('DEBUG');
logger.trace('Entering cheese testing');
logger.debug('Got cheese.');
logger.info('Cheese is Gouda.');
logger.warn('Cheese is quite smelly.');
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');
it's creating a file named as 'cheese' but nothing is there inside that. How to write content in that?
它正在创建一个名为“奶酪”的文件,但里面什么都没有。里面的内容怎么写?
回答by Vaibhav Magon
This solution helps u create logs folder and three files error.log,debug.log and info.log in ur folder log with the logs. Worked for me. Thanks.
此解决方案可帮助您在包含日志的文件夹日志中创建日志文件夹和三个文件 error.log、debug.log 和 info.log。对我来说有效。谢谢。
var log4js = require('log4js'); // include log4js
log4js.configure({ // configure to use all types in different files.
appenders: [
{ type: 'file',
filename: "/logs/error.log", // specify the path where u want logs folder error.log
category: 'error',
maxLogSize: 20480,
backups: 10
},
{ type: "file",
filename: "/logs/info.log", // specify the path where u want logs folder info.log
category: 'info',
maxLogSize: 20480,
backups: 10
},
{ type: 'file',
filename: "/logs/debug.log", // specify the path where u want logs folder debug.log
category: 'debug',
maxLogSize: 20480,
backups: 10
}
]
});
var loggerinfo = log4js.getLogger('info'); // initialize the var to use.
var loggererror = log4js.getLogger('error'); // initialize the var to use.
var loggerdebug = log4js.getLogger('debug'); // initialize the var to use.
loggerinfo.info('This is Information Logger');
loggererror.info('This is Error Logger');
loggerdebug.info('This is Debugger');
回答by twinkle
In the above code you are missing logger declaration :
Add the line var logger = log4js.getLogger('cheese');
在上面的代码中,您缺少记录器声明:添加行 var logger = log4js.getLogger('cheese');
The whole block of code will be as follows:
整个代码块如下:
var log4js = require('log4js');
log4js.loadAppender('file');
log4js.addAppender(log4js.appenders.file('logs/cheese.log'), 'cheese');
var logger = log4js.getLogger('cheese');
logger.setLevel('DEBUG');
logger.trace('Entering cheese testing');
logger.debug('Got cheese.');
logger.info('Cheese is Gouda.');
logger.warn('Cheese is quite smelly.');
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');
回答by slorenzo
In version 2.x.
在版本2.x 中。
You'd need to do something like this:
你需要做这样的事情:
var log4js = require('log4js');
log4js.configure({
appenders: { 'file': { type: 'file', filename: 'logs/cheese.log' } },
categories: { default: { appenders: ['file'], level: 'debug' } }
});
var logger = log4js.getLogger('cheese');
logger.setLevel('DEBUG');
logger.trace('Entering cheese testing');
logger.debug('Got cheese.');
logger.info('Cheese is Gouda.');
logger.warn('Cheese is quite smelly.');
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');
If you want to dynamically create files based on properties in the log message (like filename above), then take a look at the multiFile appender.
如果要根据日志消息中的属性(如上面的文件名)动态创建文件,请查看multiFile appender。
回答by CodeKid
Log4js has a feature for multifile config. See here
Log4js 具有多文件配置功能。看这里
log4js.configure({
appenders: {
out: { type: 'stdout' },
afile: { type: 'multiFile', base: 'logs/', property: 'categoryName', extension: '.log' }
},
categories: {
default: { appenders: ['out'], level: 'info' },
tofile: { appenders: ['afile'], level: 'debug' }
}
});
Then to start logging in a file logs/xyz.log:
然后开始登录文件 logs/xyz.log:
const xyzlog = log4js.getLogger('tofile.xyz');
xyzlog.info('Hello!');

