node.js - 如何在导入的路由文件中使用在 server.js 文件中创建的日志中间件
问题描述
我的盘子里有一个非常令人困惑的问题,我有一个 server.js,这是我的第一个应用程序入口点:
const test = require('./routers/test')
const express= require("express")
const pino = require('pino');
const expressPino = require('express-pino-logger');
const logger = pino({ level: process.env.LOG_LEVEL || 'info' });
const expressLogger = expressPino({ logger });
const app= express();
const port= process.env.port || 4000
app.use(expressLogger);
app.use(express.json());
app.use(test);
app.listen(port, ()=>{
logger.info(`Listening to port ${port}`);
});
如您所见,我有一个记录器(pino)并且我使用它并且它工作正常。现在我需要向这个入口点服务器文件添加一个路由文件,问题就在这里。如何在 test.js 路由文件中传递或使用我在 server.js 中创建的记录器(寻找最佳实践)?
const express = require('express');
const router = new express.Router();
router.get('test', (req, res)=>{
console.log("THIS CONSOLE.LOG NEEDS TO BE REPLACED WITH LOGGER.INFO");
res.send(udsData.getDummyUrlResponse())
});
module.exports = router
解决方案
最好将记录器提取到单独的模块中,例如logger/index.js
,然后将其导入到您需要的任何地方。
./logger/index.js
const pino = require('pino');
const expressPino = require('express-pino-logger');
const logger = pino({ level: process.env.LOG_LEVEL || 'info' });
const expressLogger = expressPino({ logger });
module.exports = { logger, expressLogger };
服务器.js
const { logger, expressLogger } = require('./logger');
app.use(expressLogger);
...
app.listen(port, ()=>{
logger.info(`Listening to port ${port}`);
});
测试.js
const { logger } = require('./logger');
推荐阅读
- python - __init__() 为参数“填充”获得了多个值
- rabbitmq - RabbitMQ 绑定键 - 最佳实践
- logging - 如何在 k8s 节点中管理系统日志/内核日志轮换策略
- autodesk-forge - 无法在 Autodesk Forge Viewer 中更改对象颜色
- python - 在 macOS Big Sur 上安装包“pyplatefit”时失败
- java - Exchange 混合 - 外部 EWS URL 引发连接超时错误
- android - 您的应用容易受到 Intent 重定向的影响
- module - 如何要求 Arduino 中的两个 BC04-B 蓝牙模块正常断开连接?
- regex - 从 URL 中提取 Google 驱动器文件夹 ID
- qaf - QAF - 如何打印/访问常用步骤将()值存储到变量中