gpt4 book ai didi

node.js - morgan 使用 Node js + Express 的文件旋转器流登录单独的 js

转载 作者:太空宇宙 更新时间:2023-11-04 02:19:45 24 4
gpt4 key购买 nike

我正在使用 Node js 创建一个测试应用程序,其中我需要为 winston 和 morgan 提供单独的记录器 js 文件。我已经为 winston 创建了单独的文件,它工作正常,但是我不知道如何为 morgan 记录器创建相同的文件。

我的 morganLogger.js 看起来像

var morgan = require('morgan');
var accessLogDirectory = __dirname + '/accessLog';
var fs = require('fs');
var path = require('path');
var fileStreamRotator = require('file-stream-rotator');

//ensure log directory exists for acccess log
fs.existsSync(accessLogDirectory) || fs.mkdirSync(accessLogDirectory)

//use custom token for date
morgan.token('date', function () {
return new Date();
});

//create a rotating write stream
var accessLogStream = fileStreamRotator.getStream({
filename: accessLogDirectory + '/access-%DATE%.log',
frequency: 'daily',
verbose: false,
date_format: 'YYYYMMDD'
});

morgan.stream = accessLogStream;
morgan.format = ':remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length]';
module.exports = morgan;

我的 server.js 看起来像这样,

var express = require('express');
var morganLogger = require('./utility/morganLogger.js');

var routes = require('./routes/index');
var users = require('./routes/users');

app.use(morganLogger());
app.use('/', routes);

运行代码后,我可以登录调试器,但未创建日志文件。

最佳答案

当通过morgan()调用morgan时,您可以通过传递{stream: accessLogStream }等对象来像stream一样设置参数morgan('options')

实例化 morgan 时,var morganLogger = require('./utility/morganLogger.js'); 并调用实例化 app.use(morganLogger());,尝试传递如下参数:

// in morganLogger.js
morgan.format = ':remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length]';
morgan.options = {
stream: accessLogStream
};

// in server.js
app.use(morganLogger (mormorganLogger.format, morganLogger.options));

// also in morganLogger.js use path.join
// when instantiating accessLogDirectory
var accessLogDirectory = path.join(__dirname ,'/accessLog');

关于node.js - morgan 使用 Node js + Express 的文件旋转器流登录单独的 js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34064526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com