首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Winston/Node.js中设置日志级别

如何在Winston/Node.js中设置日志级别
EN

Stack Overflow用户
提问于 2013-03-21 06:22:04
回答 5查看 40.2K关注 0票数 29

我在我的Node.js应用程序中使用了Winston logging,并定义了一个文件传输。在我的代码中,我使用logger.errorlogger.warnlogger.info登录。

我的问题是,如何指定日志级别?是否有可以设置的配置文件和值,以便只记录相应的日志消息?例如,我希望日志级别在我的开发环境中为"info“,但在生产环境中为"error”。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-21 07:08:53

看起来在传递的选项中有一个级别选项覆盖here

从那个文档中:

代码语言:javascript
复制
var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)({ level: 'error' }),
    new (winston.transports.File)({ filename: 'somefile.log' })
  ]
});

现在,这些示例显示了将option对象中的级别传递给控制台传输。当您使用文件传输时,我相信您会传递一个options对象,该对象不仅包含文件路径,还包含级别。

这应该会导致类似这样的结果:

代码语言:javascript
复制
var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.File)({ filename: 'somefile.log', level: 'error' })
  ]
});

根据该文档,还要注意,从2.0开始,它公开了一个在运行时更改的setLevel方法。查看该文档的Using Log Level部分。

票数 25
EN

Stack Overflow用户

发布于 2014-04-08 18:41:56

如果您使用的是默认记录器,则可以像这样调整日志级别:

代码语言:javascript
复制
const winston = require('winston');
// ...
winston.level = 'debug';

将日志级别设置为“debug”。(使用winston 0.7.3,default logger is still around in 3.2.1测试)。

但是,使用适当的日志级别进行the documentation recommends creating a new logger,然后使用该记录器:

代码语言:javascript
复制
const myLogger = winston.createLogger({
  level: 'debug'
});
myLogger.debug('hello world');

如果您已经在代码库中使用the default logger,这可能需要您用您正在使用的这个新记录器替换所有用法:

代码语言:javascript
复制
const winston = require('winston');
// default logger
winston.log('debug', 'default logger being used');

// custom logger
myLogger.log('debug', 'custom logger being used');
票数 35
EN

Stack Overflow用户

发布于 2013-03-21 11:58:56

winston中有6个默认级别:silly=0(最低)、debug=1、verbose=2、info=3、warn=4、error=5(最高)

在创建记录器传输时,您可以指定日志级别,如下所示:

代码语言:javascript
复制
new (winston.transports.File)({ filename: 'somefile.log', level: 'warn' })

上面的代码将日志级别设置为warn,这意味着sillyverboseinfo不会输出到somefile.log,而warndebugerror将输出到somefile.log。

您还可以定义自己的级别:

代码语言:javascript
复制
var myCustomLevels = {
  levels: {
    foo: 0,
    bar: 1,
    baz: 2,
    foobar: 3
  }
};

var customLevelLogger = new (winston.Logger)({ levels: myCustomLevels.levels });
customLevelLogger.foobar('some foobar level-ed message');

请注意,最好总是在您自己的自定义级别中包含6个预定义级别,以防在某个地方使用了预定义级别。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15535937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档