来自请求对象的节点/快递访问记录器
Node/Express access logger from request object
我想看看是否有一种方法可以从请求对象访问我的日志记录器。我有一个自定义的winston包装器,它使用winston, express-winston和moment来保持我的应用程序的整洁。
在我的app.js中,我只有
var logger = require('winston-custom');
server.use(logger());
然后在控制器中,我试图找到一种干净的方法来让日志记录器离开请求对象(如果可能的话),所以我不必在这里导入它。我的第一个猜测是这是要求。应用程序,但似乎不是。
所以在同一个服务器的控制器中,我输入
function rootAPI(req, res) {
console.log("req.app", req.app);
似乎没有为我提供任何东西,我甚至尝试记录请求并挖掘它。有什么方法可以正确地做到这一点吗?谢谢!
如果你绝对确定你需要这个功能,你可以通过在request
上添加一个自定义字段来实现它:
server.all("*", function(req, res, next)
{
req.logger = logger;
next();
});
虽然上面的答案是正确的,但我们可以通过创建一个快速中间件来简化实现:
const app = express()
const loggerMiddleware = (req, res, next) => { req.logger = logger; next()};
app.use(loggerMiddleware)
调用next()
是很重要的,否则下一个中间件将不会被调用。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- Javascript,访问一个主要对象模块模式中的每个对象
- 如何访问声音管理器2创建的声音对象
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- JavaScript Pub/Sub属性访问问题
- 从JavaScript访问struts操作中的属性
- 是否可以从父类访问子类的属性
- 如何访问fastOpt.js
- 访问JSON对象内部的数组元素
- 从模块内部访问Express装载路径
- 难以访问的JS环境中的语法错误
- 如何从对象的原型方法访问JavaScript对象属性
- 访问json数组中的对象
- 通过javascript/html访问twitter共享iframe
- Dojo:访问dijit.form.Select中单击的项目
- 为什么在这个网站上不能通过JS访问元素
- 从ng模板访问作用域
- Node.js快递网站可在线访问
- 无法访问具有护照.js和快递 4 的 req.user
- 来自请求对象的节点/快递访问记录器