Winston: Estructura circular a JSON: Sequelize logging

Creado en 5 nov. 2017  ·  3Comentarios  ·  Fuente: winstonjs/winston

Código:

const winston = require('winston');

const sequelize = new Sequelize(config.db.database, config.db.username, config.db.password, {
    host: config.db.host,
    dialect: config.db.dialect,
    logging: winston.info // Not work it
});

Versiones:

winston: 3.0.0-rc1
sequelize: 4.22.2
mysql2: 1.4.2

Pila de errores:

Unhandled rejection TypeError: Converting circular structure to JSON
    at Object.stringify (native)
    at Format.transform (/demo/node_modules/logform/json.js:13:24)
    at DerivedLogger._transform (/demo/node_modules/winston/lib/winston/logger.js:218:25)
    at DerivedLogger.Transform._read (_stream_transform.js:167:10)
    at DerivedLogger.Transform._write (_stream_transform.js:155:12)
    at doWrite (_stream_writable.js:331:12)
    at writeOrBuffer (_stream_writable.js:317:5)
    at DerivedLogger.Writable.write (_stream_writable.js:243:11)
    at DerivedLogger.log (/demo/node_modules/winston/lib/winston/logger.js:174:8)
    at DerivedLogger.(anonymous function) [as info] (/demo/node_modules/winston/lib/winston/create-logger.js:54:16)
    at winston.(anonymous function) (/demo/node_modules/winston/lib/winston.js:84:34)
    at Sequelize.log (/demo/node_modules/sequelize/lib/sequelize.js:1062:23)
    at Query.run (/demo/node_modules/sequelize/lib/dialects/mysql/query.js:39:22)
    at retry (/demo/node_modules/sequelize/lib/sequelize.js:543:32)
    at /demo/node_modules/retry-as-promised/index.js:39:21
    at Promise._execute (/demo/node_modules/bluebird/js/release/debuggability.js:300:9)
    at Promise._resolveFromExecutor (/demo/node_modules/bluebird/js/release/promise.js:483:18)
    at new Promise (/demo/node_modules/bluebird/js/release/promise.js:79:10)
    at retryAsPromised (/demo/node_modules/retry-as-promised/index.js:29:10)
    at Promise.try.then.connection (/demo/node_modules/sequelize/lib/sequelize.js:543:14)
    at tryCatcher (/demo/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/demo/node_modules/bluebird/js/release/promise.js:512:31)

Alternativa de solución
Usado
circular-json
en vez de
https://github.com/winstonjs/logform/blob/master/json.js#L13

Comentario más útil

Creo que esto está relacionado con la secuela y no con Winston.
Nos encontramos con este problema después de actualizar la sequelize a la versión 4.
Creo que, a partir de esta versión, se llama a una función de registro con dos argumentos sql y algún objeto de secuenciación (no recuerdo cuál era exactamente el objeto). winston intenta registrar todos los argumentos pasados, por lo que también intentó secuenciar el objeto, lo que no está destinado a registrarse.

Para solucionar este problema, intente ajustar la llamada al registro de Winston en otra función.

const winston = require('winston');

const sequelize = new Sequelize(config.db.database, config.db.username, config.db.password, {
    host: config.db.host,
    dialect: config.db.dialect,
    logging: function(sql, sequelizeObject) {
        winston.info(sql); // Not work it
    }
});

Todos 3 comentarios

Creo que esto está relacionado con la secuela y no con Winston.
Nos encontramos con este problema después de actualizar la sequelize a la versión 4.
Creo que, a partir de esta versión, se llama a una función de registro con dos argumentos sql y algún objeto de secuenciación (no recuerdo cuál era exactamente el objeto). winston intenta registrar todos los argumentos pasados, por lo que también intentó secuenciar el objeto, lo que no está destinado a registrarse.

Para solucionar este problema, intente ajustar la llamada al registro de Winston en otra función.

const winston = require('winston');

const sequelize = new Sequelize(config.db.database, config.db.username, config.db.password, {
    host: config.db.host,
    dialect: config.db.dialect,
    logging: function(sql, sequelizeObject) {
        winston.info(sql); // Not work it
    }
});

¡Gracias @matuszeman!

Muchas gracias @matuszeman , ¡estaba rascándome la cabeza por un tiempo con esto!

¿Fue útil esta página
0 / 5 - 0 calificaciones