帆记录到文件
Posted
技术标签:
【中文标题】帆记录到文件【英文标题】:sails logging to file 【发布时间】:2013-12-27 03:18:30 【问题描述】:有人可以提供一个如何配置sails.js 以记录到文件的示例吗?
看起来应该很简单,但我在网上找不到示例。
我正在查看 config/log.js 或 config/sockets.js 文件中的更改。
【问题讨论】:
【参考方案1】:根据the source code,对于v0.9.x,您只需在config/log.js
中设置filePath
:
module.exports =
log:
level: 'info',
filePath: 'application.log'
;
【讨论】:
谢谢...我在发布此问题并阅读源代码后不久就发现了这一点。不幸的是,没有很好的记录。不过忘记更新这个问题了。标记为正确! :) 谢谢! 有什么方法可以访问我在 config/log.js 中的记录器文件吗? @Mahahari 从技术上讲,你可以,但它是一个配置文件,不是为了那个。 源代码链接现在已经过时了,我认为正确答案已经改变。 Sails 似乎调用了一个名为 CaptainsLog 的库,该库用于包装一个名为 winston 的实际日志记录库,但它不再这样做,除非您显式调用 winston 似乎已经过时了 - 也许至少更新为适用的版本,我会改变我的投票。【参考方案2】:记录到文件不能开箱即用。您需要在两层以下调用库中的功能。请参阅 winston 的文档。
首先像这样安装winston:
$ npm install winston
然后调整config/log.js
如下图
var winston = require('winston');
/*see the documentation for Winston: https://github.com/flatiron/winston */
var logger = new(winston.Logger)(
transports: [
new (winston.transports.Console)(),
new (winston.transports.File)(
filename: 'logfile.log',
level: 'verbose',
json: false,
colorize: false
)
]
);
module.exports.log =
/***************************************************************************
* *
* Valid `level` configs: i.e. the minimum log level to capture with *
* sails.log.*() *
* *
* The order of precedence for log levels from lowest to highest is: *
* silly, verbose, info, debug, warn, error *
* *
* You may also set the level to "silent" to suppress all logs. *
* *
***************************************************************************/
level: 'silly',
colorize: false,
custom: logger
;
【讨论】:
如果有足够多的人支持它,我将重新接受它作为新的正确答案。我没有积极使用帆,所以我现在不能保证这一点。 我需要 npm install winston 才能正常工作。此外,我没有看到任何连接被记录(但这可能是另一个话题) 从过去两天开始,winston 没有在文件中记录任何日志。当我重新启动 PM2 时,它会记录几个小时,然后再次停止记录。可能是什么问题 这可行,但会强制您在此处指定日志级别。你知道如何使用 winston 但允许覆盖值,例如来自config/local.js
,设置日志级别?
完美运行。它可以安全地成为公认的答案。【参考方案3】:
对于winston 3.x.x 版本
@djsadinoff 的回答无效。
改为:
$ npm install winston
将您的 config/log.js 文件替换为 Sails.js 中的以下代码
var winston = require('winston');
const logger = winston.createLogger(
level: 'silly',
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: 'sails.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()
));
module.exports.log =
/***************************************************************************
* *
* Valid `level` configs: i.e. the minimum log level to capture with *
* sails.log.*() *
* *
* The order of precedence for log levels from lowest to highest is: *
* silly, verbose, info, debug, warn, error *
* *
* You may also set the level to "silent" to suppress all logs. *
* *
***************************************************************************/
// Pass in our custom logger, and pass all log levels through.
custom: logger,
level: 'silly',
// Disable captain's log so it doesn't prefix or stringify our meta data.
inspect: false
;
那就做吧
$ sails lift
【讨论】:
以上是关于帆记录到文件的主要内容,如果未能解决你的问题,请参考以下文章