记录使用nodejs实现数据统计平台碰到的一些坑:
String + Array
在调试的时候需要打印一些log进行分析,打印long的源码为:
控制台输出的结果为:
以为是字符串的原因,将searchArgs转为字符串,打印log的代码改为
log.info("请求的参数为:", searchArgs.toString)
控制台输出仍为
搜索的searchArgs为:[object object]
尝试直接打印
log.info(searchArgs)
控制台输出的结果为:
正确!
log4js
使用log4js对日志进行输出
在log/logger.js中实现
使用的实例为:
var log = require('../../logs/logger.js').logger('testLog','Module');
log.info('info');
log.warn('warn');
log.error('error');
在D盘的log4Platform文件夹下生成testLog_yyyy-MM-dd.log 文件
文件内容为:
[2016-08-10 18:19:07.941] [INFO] Module - info
[2016-08-10 18:19:07.944] [WARN] Module - warn
[2016-08-10 18:19:07.944] [ERROR] Module - error
当在一个.js文件中声明:
var log = require('../../logs/logger.js').fixedlogger('module');
所有模块均可以调用
log.info('info');
log.warn('warn');
log.error('error');
当在a.js文件中声明:
var log = require('../../logs/logger.js').fixedlogger('a');
在a.js中使用
log.info('a info');
当在b.js文件中声明:
var log = require('../../logs/logger.js').fixedlogger('b');
在b.js中使用
log.info('b info');
发现只有a.js或者b.js文件能写入log文件中,但是在控制台都能输出
原来 log4js.configure
是一个全局设置
故在log/logger.js文件中,初始化
log4js.configure({
appenders: [
{
type: "console"
}
],
replaceConsole: true
});
log4js.loadAppender('dateFile');
使用 log4js.addAppender
的方法:
function getLogger(filename,moduleName){
log4js.addAppender(log4js.appenders.dateFile(path.join(logPath, filename), "_yyyy-MM-dd.log", true), moduleName);
var log = log4js.getLogger(moduleName);
log.setLevel('auto');
return log;
}
此时在不同的.js文件中均可以传不同参数进行调用