2012-03-04 24 views

Respuesta

1

En socket.io, puede establecer un custom logger. Intenté asignar un logger log4js, pero eso causó un error. Sospecho que usted (y yo) tendremos que escribir un contenedor, que pasa la llamada de registro junto con log4js.

Aquí está el código que terminó escribiendo:

var LogWrapper = function() { 
    this.logger = log4js.getLogger('socket.io'); 
}; 
LogWrapper.prototype.error = function() { 
    this.logger.error.apply(this.logger, arguments); 
}; 
LogWrapper.prototype.warn = function() { 
    this.logger.warn.apply(this.logger, arguments); 
}; 
LogWrapper.prototype.info = function() { 
    this.logger.info.apply(this.logger, arguments); 
}; 
LogWrapper.prototype.debug = function() { 
    this.logger.debug.apply(this.logger, arguments); 
}; 
io.set('logger', new LogWrapper()); 
0

Tuve este problema al igual que construir una utilidad basada en consola. Quería que la utilidad escribiera su salida en la consola, pero mantuviera los registros en un archivo. No importa cómo lo intenté, no pude separar los dos búferes de salida.

La solución fue añadir una categoría a la consola appender en la llamada log4js.configure, así:

var log4js = require('log4js'); 

log4js.configure({ 
    appenders: [ 
    { type: 'console', category: 'thiswillgotoconsole' }, 
    { type: 'file', filename: 'myLog.log', category: 'thiswillgotofile' } 
    ] 
}); 

var logger = log4js.getLogger('thiswillgotofile'); 
logger.setLevel('debug'); 

logger.debug('thiswillgotofile'); 
console.log('thiswillgotoconsole'); 
0

si alguien debe topas con este lugar hilo de edad, por favor allí es (mientras tanto?) también la posibilidad de desactivar el registro de la consola por configuración.

Basta con establecer replaceConsole: true al configurar @see Example on github

No sabe si realmente resuelve de qué iba a lograr, pero seguro que hará que los registros desaparecen de la consola al hacerlo

0

He aquí cómo lo hice funcionar:

El problema es que la categoría predeterminada para la configuración del appender es '[all]'. establecer la categoría a '[por defecto]' y sólo se aplicará a los madereros que están 'metido' con una categoría: log4js.getLogger()

{ 
    appenders: [ 
    { type: 'console', category: '[default]' }, 
    { type: 'file', filename: 'logs/cheese.log', category: 'cheese' } 
    ] 
} 

Más explicación:

Probablemente tenían/​​tienen algo que se parece al ejemplo de configuración appender

{ 
    appenders: [ 
    { type: 'console' }, 
    { type: 'file', filename: 'logs/cheese.log', category: 'cheese' } 
    ] 
} 

Y entonces se obtiene el registrador por con o sin un nombre de categoría:

var logger = log4js.getLogger(); 
var cheeseLogger = log4js.getLogger('cheese'); 

logger.info(1) 
cheeseLogger(2) 

de salida:

[2016-10-25 15:43:06.225] [INFO] [default] - 1 
[2016-10-25 15:43:06.225] [INFO] cheese - 2 

logs/cheese.log:

[2016-10-25 15:43:06.225] [INFO] cheese - 2 
Cuestiones relacionadas