registrador.js
const { createLogger, format, transports } = require('winston'); class Logger { constructor() { this.logger = createLogger({ transports: new transports.File({ level: 'error', filename: 'error.log', format: format.json(), `` }), }); } logError(err) { this.logger.error(err); } } module.exports = Logger;Como puede ver, estoy usando el método prototipo. Para no tener que usar un nuevo método para crear objetos. Adjunto los 3 archivos. Solo quiero saber cómo puedo usar el registrador en el archivo user.js sin usar una nueva palabra clave en el archivo logger.js.
usuario.js
exports.postUser = async (req, res, next) => { try { console.log(`name:${JSON.stringify(req.body)}`) throw new Error('this is an error on the post'); let user = new User({ name: req.body.name, age: parseInt(req.body.age), city: req.body.city, status: 'ACTIVE' }) let savedPost = await user.save(); console.log(`savedPost':${JSON.stringify(savedPost)}`); res.json(savedPost); } catch (err) { console.log(`err:${err.toString()}`) res.status(500).json({ message: err })aquí quiero llamar al registrador. Para que pueda devolver el método, err, fecha.
logger.prototype.logError = function() { return (`function:controller.postUser, error:${err.toString()} -method: ${req.method}- body:${JSON.stringify(req.body)} date:${new Date(Date.now()).toUTCString()}`) } };rutas.js
const router = require('express').Router(); const { json } = require('body-parser'); const User = require('../models/user'); const controller = require('../controllers/user'); const middle = require('../middleware/middleware') /*routes*/ router.get('/', controller.getUser); router.post('/', middle.verify, controller.postUser); router.put('/:userId', controller.updateUser) router.delete('/:userId', controller.deleteUser); module.exports = router