LOG4JS es uno de los mejores módulos en el procesamiento de registro node.js. En comparación con la depuración de consola o TJ, los siguientes son indispensables para los proyectos node.js que se ponen en producción:
Este artículo le brindará una introducción completa a Log4JS, lo que le permitirá usar log4js en su proyecto con facilidad, fácil desarrollo y depuración, y un mejor monitoreo o resolución de problemas en línea.
Una pequeña prueba
Las siguientes tres líneas de código le muestran el uso más fácil de log4js:
// archivo: simply.jsvar log4js = request ('log4js'); var logger = log4js.getLogger (); logger.debug ("time:", new date ());Llamar .getLogger () puede obtener una instancia de log4js logger. El uso de esta instancia es el mismo que el de la consola. Puede llamar a .debug (también .info, .Error y otros métodos) a los registros de salida.
Ejecutar Node Simplest.js y la salida es la siguiente:
$ node simplest.js [2016-08-21 00: 01: 24.852] [Debug] [predeterminado]-Tiempo: 2016-08-20T16: 01: 24.852Z
Hora: 2016-08-20T16: 01: 24.852Z es lo que queremos generar. El anterior contiene el especificador [2016-08-21 00: 01: 24.852] [Debug] [predeterminado] se enumera más adelante.
¿No es muy fácil de usar? Bueno, antes de sumergirnos en el uso avanzado de log4js, primero nos familiaricemos con los conceptos en log4js.
Nivel
Esto no es difícil de entender, es la clasificación de registros. Solo cuando los registros son jerárquicos, los registros pueden mostrar mejor los registros (diferentes niveles de registros usan diferentes colores en la consola, como el error generalmente es rojo), y cuando la producción, puede dejar registros selectivamente, como evitar algunas información confidencial que pertenece a .debugs se filtran.
Los registros de log4js se dividen en nueve niveles, y los nombres y pesos de cada nivel son los siguientes:
{ ALL: new Level(Number.MIN_VALUE, "ALL"), TRACE: new Level(5000, "TRACE"), DEBUG: new Level(10000, "DEBUG"), INFO: new Level(20000, "INFO"), WARN: new Level(30000, "WARN"), ERROR: new Level(40000, "ERROR"), FATAL: new Level(50000, "FATAL"), MARK: new Nivel (9007199254740992, "Marca"), // 2^53 OFF: NUEVO Nivel (Number.max_value, "Off")}Imagen anterior:
Todos los dos niveles no se usan directamente en el código de negocios. Los siete restantes son los siete métodos correspondientes a la instancia del registrador,. Por lo tanto, el anterior [2016-08-21 00: 01: 24.852] [Debug] [predeterminado]-Tiempo: 2016-08-20T16: 01: 24.852Z es el nivel de este registro.
tipo
LOG4JS también tiene un concepto llamado Categoría (Tipo). Puede establecer el tipo de instancia de registrador y distinguir registros de acuerdo con otra dimensión:
// archivo: set-catetory.jsvar log4js = request ('log4js'); var logger = log4js.getLogger ('ejemplo'); logger.debug ("time:", new date ());Al obtener una instancia de registrador a través de GetLogger, el único parámetro que se puede pasar es LoggerCategory (como 'Ejemplo'). Este parámetro especifica a qué categoría pertenece la instancia del registrador. Esto es lo mismo que la depuración de TJ:
var Debug = require ('debug') ('trabajador'); setInterval (function () {debug ('hacer algo de trabajo');}, 1000);En la depuración 'trabajador', también es una clasificación de registro. Ok, regrese y ejecute el set-catetory.js: JS:
[2016-08-21 01: 16: 00.212] [Debug] Ejemplo-Tiempo: 2016-08-20T17: 16: 00.212Z
La única diferencia de la anterior [2016-08-21 00: 01: 24.852] [Debug] [predeterminado]-Tiempo: 2016-08-20T16: 01: 24.852Z es que [predeterminado] se ha convertido en un ejemplo.
¿De qué sirve la categoría? Es más flexible que el nivel y proporciona una segunda dimensión de distinción para los registros. Por ejemplo, puede establecer una categoría diferente para cada archivo, como en Set-Catetory.js:
// Archivo: set-catetory.jsvar log4js = request ('log4js'); var logger = log4js.getLogger ('set-catetory.js'); logger.debug ("time:", new date ());Puede ver desde el registro [2016-08-21 01: 24: 07.332] [Debug] Set-Catetory.js-Tiempo: 2016-08-20T17: 24: 07.331z que este registro proviene del archivo set-catetory.js. O use diferentes categorías para diferentes paquetes de nodos, de modo que los registros se puedan distinguir del de qué módulo se originan.
Apéndice
Bueno, ahora el registro tiene niveles y categorías, lo que resuelve el problema de la calificación y la clasificación de los registros en la entrada. En LOG4JS, el problema de exportación de registro (es decir, donde se emite la salida del registro) se resuelve por Appender.
APRENDIZAJE PUERTO
Las siguientes son la configuración de appender predeterminada para log4js interno:
// log4js.jsdefaultconfig = {appenders: [{type: "console"}]}Como puede ver, cuando los registros no están configurados de ninguna manera, los registros se emiten a la consola de forma predeterminada.
Configure su propio apéndice
Podemos establecer el appender que queremos a través de log4js.configure.
// archivo: custom-appender.jsvar log4js = request ('log4js'); log4js.configure ({appenders: [{type: 'file', filename: 'default.log'}]}) var logger = log4jsgetLogger ('custom-appender'); logger.debug ("time:", new fech ();););););En el ejemplo anterior, emitimos el registro al archivo y ejecutamos el código. LOG4JS crea un archivo llamado default.log en el directorio actual. [2016-08-21 08: 43: 21.272] [Debug] Administración personalizada-Tiempo: 2016-08-21T00: 43: 21.272Z lo lleva al archivo.
El appender proporcionado por log4js
La consola y el archivo son los apeladores proporcionados por LOG4JS, además de esto:
DateFile: el registro se emite a un archivo, y el archivo de registro se puede desplazar en un modo de fecha específico, como la salida al valor predeterminado-2016-08-21.log hoy, y la salida al valor predeterminado-2016-08-22.log mañana;
SMTP: Registro de salida al correo electrónico;
Mailgun: los registros de salida a Mailgun a través de la API de Mailgun;
Levelfilter se puede filtrar a través del nivel;
Y así sucesivamente, algunos otros apéndices, puede ver la lista completa aquí.
Niveles de filtrado y categorías
Podemos ajustar la configuración de Appender y filtrar los niveles de registro y categorías:
// Archivo: Level-and-Category.jsvar log4js = require ('log4js'); log4js.configure ({appenders: [{type: 'loglevelfilter', nivel: 'debug', categoría: 'categoría1', appender: {type: 'fileGerame:' Default.log '}}]}) Var log log. log4js.getlogger ('category1'); var logger2 = log4js.getlogger ('category2'); logger1.debug ("tiempo:", nueva fecha ()); logger1.trace ("hora:", nueva fecha ()); logger2.debug ("hora:", nueva fecha ());Ejecutar, agregue un registro a predeterminado.log:
[2016-08-21 10: 08: 21.630] [Debug] Categoría 1-Hora: 2016-08-21T02: 08: 21.629Z
Echemos un vistazo al código:
Use loglevelfilter y nivel para filtrar los niveles de registro, y se emitirán todos los registros con pesos mayores o iguales a la depuración. Esta es también la importancia del peso de nivel log mencionado anteriormente;
Seleccione la categoría para emitir los registros a través de la categoría. Los registros en la categoría 2 se filtran. La configuración también acepta una matriz, como ['Categoría 1', 'Categoría 2'], de modo que ambas categorías de registros se generen al archivo.
Disposición
El diseño es una característica avanzada proporcionada por LOG4JS. A través del diseño, podemos personalizar el formato de cada registro de salida. LOG4JS tiene cuatro tipos de formatos incorporados:
MessagePassthrough: solo emite el contenido del registro;
Básico: el tiempo, el nivel de registro y la categoría se agregarán antes del contenido del registro, y generalmente se agrega el diseño predeterminado del registro;
Colorado/coloreado: agregue color al registro sobre la base de BASIC, la consola Appender usa este diseño de forma predeterminada;
Patrón: este es un tipo especial que puede definirse por cualquier formato que desee.
Un ejemplo de patrón:
// Archivo: Layout -Pattern.jsvar log4js = require ('log4js'); log4js.configure ({appenders: [{type: 'console', Layout: {type: 'patrón', patrón: [%r] [%[%5.5p%]] -%m%n '}]}) var logger = log4js.getLogger ('LEDOUT-Pattern'); logger.debug ("Time:", new Date ());%R %P $ M $ N es un especificador incorporado para log4js. Puede usar esto para generar información meta. Para obtener más detalles, puede consultar la documentación LOG4JS.
Explicemos el posicionamiento de Logger, Appender y Diseño en una imagen.
Práctico: Acceso a la salida Acceso al registro
Para facilitar la verificación del problema, los registros de las solicitudes de aplicaciones que ingresan y salen a menudo se registran en entornos de producción. ¿Cómo implementarlo usando LOG4JS? Solo ingrese el código:
// archivo: server.jsvar log4js = require ('log4js'); var express = require ('express'); log4js.configure ({appenders: [{type: 'dateFile', nombre de archivo: 'access.log', patrón: '-yyyyy-mm-dd.log', siempre enriquecida: verdadero, verdadero, categoría: categoría '}); express (); app.use (log4js.connectlogger (log4js.getlogger ('access'), {nivel: log4js.levels.info})); app.get ('/', function (req, res) {res.send ('front-end extranjero comentario de la revista');}); app.listen (5000);Mira lo que hicimos:
Se configura un Appender para seleccionar un registro con el acceso a la categoría desde el registro y emitirlo a un archivo de desplazamiento;
log4js.getlogger ('access') obtiene una instancia de registrador con una categoría de acceso, y la pasa a log4js.connectlogger middleware. Este middleware recopila información de acceso y la imprime a través de esta instancia.
Inicie el servidor y visite http: // localhost: 5000. Encontrará que hay un archivo adicional llamado Access.log-2016-08-21.log en el directorio, que contiene dos registros:
[2016-08-21 14: 34: 04.752] [Info] Acceso - :: 1 - - "Get/Http/1.1" 200 18 "" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebkit/537.36 (KHTML, como Gecko) Chrome/52.0.2743.116 Safit/537.36".
[2016-08-21 14: 34: 05.002] [Info] Acceso - :: 1 - - "Get /favicon.ico http/1.1" 404 24 "http: // localhost: 5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) Applewebkit/537.36 (KHTML, como GEKTO) Chrome/52.0.2743.116 Safari/537.36 "
A través de la función de clasificación y appender de los registros LOG4JS, emitimos los registros de acceso a un archivo actualizado de desplazamiento.
Resumir
Este artículo presenta exhaustivamente el uso de LOG4JS. En comparación con las herramientas de registro de consola o simples, LOG4JS es más complejo de usar y, por supuesto, más potente, y es adecuado para aplicaciones de nivel de producción. Si está interesado, deje un mensaje para decirnos. A continuación, puede presentarle cómo administrar la configuración en aplicaciones de nodo.