我只是从nodejs开始。
我正在实例化server.js中的记录器(Pino),这是入口点。我只想创建该记录器的一个实例,并在其他模块中使用它。
'use strict';
const express = require('express');
const pino = require('pino');
const log = pino({ level: process.env.LOG_LEVEL || 'info' });
const ping = require('./routes/ping'); //new
const app = express();
app.use('/api/ping', ping);
const port = 3000;
app.listen(port, () => {
console.log(`API server started on ${port}... ^C to end`);
});
module.exports = { app, log }; //edited
那么在ping.js中,我如何获得登录services.js的权限?
const express = require('express');
const router = express.Router();
const { log } = require('../server'); //edited
router.get('/', async function(req, res) {
log.info('someone pinged');
res.sendStatus(200);
});
module.exports = router;
根据建议进行了编辑。
答案 0 :(得分:0)
'use strict';
const path = require('path');
const express = require('express');
const ping = require('./routes/ping');
const pino = require('pino');
const log = pino({ level: process.env.LOG_LEVEL || 'info' });
var app = module.exports = express();
app
.use('/api/ping', ping);
const port = config.SERVER_PORT || 3000;
app.listen(port, () => {
console.log(`API server started on ${port}... ^C to end`);
});
module.exports = {app,pino}
现在您可以在任何地方导入相同的pino实例。
const log = require('./server.js').pino
答案 1 :(得分:0)
您可以将记录器作为属性附加到app
对象或app.locals
上。然后,可以通过req.app.logger
或req.app.locals.logger
或中间件和路由处理程序中的任何内容来访问它的引用。