express如何记录日志并写入文件

来源:互联网 发布:如何管理淘宝 编辑:程序博客网 时间:2024/05/01 12:56
1、使用express自带的模块
var logFile = fs.createWriteStream('./apkAnalysis.log', {    "flags": "a"});app.configure(function(){  app.use(express.logger({stream: logFile}));});
这段代码是加在app.js中的,但是我发现一个问题,这个日志它只记录其他客户端对服务器的访问信息,如下图是我用chrom访问我的服务器


2、使用winston模块
使用它之前我们首先得把它安装到项目里:
    首先进入项目文件夹,然后npm install  winston

下面我们就可以引用它了,我是在app.js中引入的:
var winston=require('winston');var logger = new (winston.Logger)({    transports: [        new (winston.transports.Console)(),        new (winston.transports.File)({             filename: './apkAnalysis.log',            timestamp:'true',             maxsize: 10485760, //日志文件的大小            maxFiles: 10 })    ]});
当我们需要记录日志文件的时候我们可以这样写:
logger.log('info', 'Test LogMessage', { anything: 'This is metadata' });

当我们runapp.js的时候就会在
apkAnalysis.log中看到如下图:


为了方便我在项目目录下面新建了一个config文件夹,然后在config文件夹里新建了一个文件//logger.js
var winston=require('winston');var logger = new (winston.Logger)({    transports: [        new (winston.transports.Console)(),        new (winston.transports.File)({            filename: './apkAnalysis.log',            timestamp:'true',            maxsize: 10485760,            maxFiles: 10 })    ]});exports.logger=logger;


之后在其他js文件调用它就很方便了,例如我在app.js中调用它,我会先引入它:
var logs=require('./config/logger.js');
使用它的时候就很方便了:
logs.logger.log('info',"Express server listeningon port  3000" );