如何将sequelize日志写入文件而不是控制台?

时间:2016-11-02 07:29:24

标签: node.js sequelize.js

我想将sequelize日志写入文件而不是控制台。所有续集日志都写入控制台,这是默认值。

提前致谢。

3 个答案:

答案 0 :(得分:4)

docs中查看options.logging。默认值为

options.logging = console.log

表示所有日志记录都传递给console.log()。因此,只需将日志记录更改为将消息附加到日志/文本文件的函数。实施例

var sequelize = new Sequelize('database', 'username', 'password', {
  logging: myLogFunc
}); 

var myLogFunc = function(msg) {
}

winston 是一个很好的nodejs软件包,用于管理日志 - >的 https://github.com/winstonjs/winston

答案 1 :(得分:0)

这是肮脏的方式(仅在本地环境中使用):

import fs = require('fs');

const logStream = fs.createWriteStream('./sql.log', {'flags': 'a'});

const sequelize = new Sequelize('database', 'username', 'password', {
  logging: msg => logStream.write(msg),
}); 

答案 2 :(得分:0)

const sequelize = new Sequelize('sqlite::memory:', {
  // Choose one of the logging options
  logging: console.log,                  // Default, displays the first parameter of the log function call
  logging: (...msg) => console.log(msg), // Displays all log function call parameters
  logging: false,                        // Disables logging
  logging: msg => logger.debug(msg),     // Use custom logger (e.g. Winston or Bunyan), displays the first parameter
  logging: logger.debug.bind(logger)     // Alternative way to use custom logger, displays all messages
});

使用我用过的任何一个记录器

logging:  msg => logger.log('info',msg)

这对我有用