node.js - nodejs - npm node js
Registros de acceso integrados en node.js(marco expreso) (4)
En las versiones más recientes de Express ( 4.0.0 en el momento de la escritura), el registrador ya no es parte de Express, por lo que debe incluirlo como una dependencia de forma manual. Ahora se llama morgan .
Entonces, en package.json
, agrega morgan como una dependencia:
"dependencies": {
...
"morgan": "*"
...
}
Y en su configuración Express, agregue:
app.use(require(''morgan'')(''dev''));
Ahora el registro debería funcionar más o menos como antes. :-)
Me preguntaba si node.js (o express framework) tiene algún tipo de acceso de acceso integrado como el de Grails, por ejemplo.
Tengo la aplicación grails que se ejecuta en tomcat y genera automáticamente el archivo /apache-tomcat-7.0.42/logs/localhost_access_log.2013.10.30.txt
en el que hay registros sobre la respuesta de solicitud como esta:
[30/Oct/2013:00:00:01 +0000] [my-ip-address] [http-bio-8080-exec-18] "GET /my-service/check HTTP/1.0" [200] [took: 1 milis]
Estos registros se escriben automáticamente por el sistema y no tengo que preocuparme por eso.
Entonces, ¿qué pasa con node.js ?
¡Gracias por cualquier ayuda!
Ivan
editar A partir de la 4.0.0
, aparentemente esta solución ya no es suficiente. Consulte la respuesta de whirlwin para obtener una solución actualizada.
Puede usar app.use(express.logger());
Documentado aquí: http://www.senchalabs.org/connect/logger.html
A partir de ahora, la mayoría del middleware (como el registrador) ya no se incluye con Express y debe instalarse por separado.
Respuesta corta: Primero, instale morgan
:
npm install morgan
Luego úselo para iniciar sesión:
app = express();
var morgan = require(''morgan'')
...
app.use(morgan(''combined''))
La documentación está aquí .
No está integrado, pero es muy fácil de configurar. Puede usar express-winston y agregarlo a la pila de middleware express. morgan
no le permite registrar el cuerpo de la solicitud, pero expressWinston lo hace:
expressWinston.requestWhitelist.push(''body'');
expressWinston.responseWhitelist.push(''body'');
Ejemplo en coffeescript:
expressWinston.requestWhitelist.push(''body'')
expressWinston.responseWhitelist.push(''body'')
app.use(expressWinston.logger({
transports: [
new winston.transports.Console({
json: true,
colorize: true
})
],
meta: true, // optional: control whether you want to log the meta data about the request (default to true)
msg: "HTTP {{req.method}} {{req.url}}", // optional: customize the default logging message. E.g. "{{res.statusCode}} {{req.method}} {{res.responseTime}}ms {{req.url}}"
expressFormat: true, // Use the default Express/morgan request formatting, with the same colors. Enabling this will override any msg and colorStatus if true. Will only output colors on transports with colorize set to true
colorStatus: true, // Color the status code, using the Express/morgan color palette (default green, 3XX cyan, 4XX yellow, 5XX red). Will not be recognized if expressFormat is true
ignoreRoute: function (req, res) { return false; } // optional: allows to skip some log messages based on request and/or response
}));