Usando el ejemplo en la página de inicio, obtengo el siguiente error:
/Users/owner/path/log.js:7
format: winston.format.json(),
^
TypeError: Cannot read property 'json' of undefined
at Object.setupLogging (/Users/owner/path/log.js:7:27)
at Object.<anonymous> (/Users/owner/path/server.js:35:8)
at Module._compile (module.js:573:30)
at Object.Module._extensions..js (module.js:584:10)
at Module.load (module.js:507:32)
at tryModuleLoad (module.js:470:12)
at Function.Module._load (module.js:462:3)
at Function.Module.runMain (module.js:609:10)
at startup (bootstrap_node.js:158:16)
at bootstrap_node.js:578:3
const winston = require('winston');
function setupLogging(app) {
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
//
// - Write to all logs with level `info` and below to `combined.log`
// - Write all logs error (and below) to `error.log`.
//
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' }),
],
});
//
// If we're not in production then log to the `console` with the format:
// `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
//
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: winston.format.simple(),
colorize: true,
}));
}
}
module.exports = {
setupLogging,
};
package.json
listas "winston": "^2.4.0"
console.log(winston);
Producción:
{ version: '2.4.0',
transports:
{ Console: [Getter],
File: [Getter],
Http: [Getter],
Memory: [Getter] },
hash: [Function],
clone: [Function],
longestElement: [Function],
exception:
{ getAllInfo: [Function],
getProcessInfo: [Function],
getOsInfo: [Function],
getTrace: [Function] },
config:
{ allColors:
{ ... },
addColors: [Function],
colorize: [Function],
cli: { levels: [Object], colors: [Object] },
npm: { levels: [Object], colors: [Object] },
syslog: { levels: [Object], colors: [Object] } },
addColors: [Function],
Container: [Function],
Logger:
{ [Function]
super_:
{ [Function: EventEmitter]
EventEmitter: [Circular],
usingDomains: false,
defaultMaxListeners: [Getter/Setter],
init: [Function],
listenerCount: [Function] } },
Transport:
{ [Function]
super_:
{ [Function: EventEmitter]
EventEmitter: [Circular],
usingDomains: false,
defaultMaxListeners: [Getter/Setter],
init: [Function],
listenerCount: [Function] } },
loggers: { loggers: {}, options: {}, default: { transports: [Array] } },
levels: { error: 0, warn: 1, info: 2, verbose: 3, debug: 4, silly: 5 },
error: [Function],
warn: [Function],
info: [Function],
verbose: [Function],
debug: [Function],
silly: [Function],
log: [Function],
query: [Function],
stream: [Function],
add: [Function],
remove: [Function],
clear: [Function],
profile: [Function],
startTimer: [Function],
extend: [Function],
cli: [Function],
handleExceptions: [Function],
unhandleExceptions: [Function],
configure: [Function],
setLevels: [Function] }
No parece haber una propiedad createLogger
o format
.
La fuente muestra que createLogger está en el objeto de exportación.
Resuelto: el archivo readme.md es para la versión 3. Tengo la versión 2.
La página de inicio muestra el uso de v3, pero npm todavía tiene el valor predeterminado de v2.
La página de inicio probablemente debería mencionar esto claramente.
Han pasado tres meses y este sigue siendo el caso.
Esto también me mordió.
Caí en la misma trampa. Pero a quién le importa ¯_ (ツ) _ / ¯
Actualice a v3:
npm i winston<strong i="6">@next</strong> --save
benwind gracias ... un montón ... sin embargo, ahora con BOT Builder Framework de Microsoft (usando TypeScript) ... ahora da este error: TypeError: No se puede crear la propiedad 'Símbolo (nivel)' en la cadena 'h'
¿alguna ayuda?
@ sanjivsingh22 No estoy seguro de qué es eso. Pero si estuviera depurando.
Es de esperar que esto conduzca a acercarnos a una solución.
Vamos a continuar y cerrar esto ya que el archivo README se ha actualizado y la versión 3 se enviará pronto. No dude en abrir un nuevo número si surge algún problema nuevo. ¡Gracias!
Comentario más útil
Resuelto: el archivo readme.md es para la versión 3. Tengo la versión 2.
La página de inicio muestra el uso de v3, pero npm todavía tiene el valor predeterminado de v2.
La página de inicio probablemente debería mencionar esto claramente.