首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Winston不能很好地打印到控制台

Winston不能很好地打印到控制台
EN

Stack Overflow用户
提问于 2013-07-31 14:44:23
回答 5查看 35.6K关注 0票数 35

我试图让Winston漂亮地打印到控制台上,所以我将其放在一个文件中,并使用node运行它:

代码语言:javascript
复制
var winston = require('winston');
winston.cli();
winston.data({
  a: "test",
  of: "many",
  properties: {
    like: "this"
  }
});
winston.data('data', {
  a: "test",
  of: "many",
  properties: {
    like: "this"
  }
});

终端返回以下(不完全正确)消息:

代码语言:javascript
复制
data:     a=test, of=many, like=this
data:    data a=test, of=many, like=this

我正在遵循Winston Readme上的说明(“在CLI工具中使用winston”)。我是不是读错了什么?在什么地方丢失了设置?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-08-01 15:02:18

我找到了答案(文档是不正确的)。如果使用构造函数并手动添加传输,则可以为winston和单个传输设置选项。某些选项需要直接添加到winston中,而其他选项则需要添加到传输中。

例如:

代码语言:javascript
复制
var winston = require('winston');
var logger = new (winston.Logger)({
  levels: {
    trace: 0,
    input: 1,
    verbose: 2,
    prompt: 3,
    debug: 4,
    info: 5,
    data: 6,
    help: 7,
    warn: 8,
    error: 9
  },
  colors: {
    trace: 'magenta',
    input: 'grey',
    verbose: 'cyan',
    prompt: 'grey',
    debug: 'blue',
    info: 'green',
    data: 'grey',
    help: 'cyan',
    warn: 'yellow',
    error: 'red'
  }
});

logger.add(winston.transports.Console, {
  level: 'trace',
  prettyPrint: true,
  colorize: true,
  silent: false,
  timestamp: false
});

logger.add(winston.transports.File, {
  prettyPrint: false,
  level: 'info',
  silent: false,
  colorize: true,
  timestamp: true,
  filename: './nKindler.log',
  maxsize: 40000,
  maxFiles: 10,
  json: false
});
票数 31
EN

Stack Overflow用户

发布于 2018-03-02 04:00:44

如果你使用的是winston@3.0.0-rc0,那么接受的答案将不起作用。尝试以下操作:

代码语言:javascript
复制
const winston = require("winston");
let date = new Date().toISOString();
const logFormat = winston.format.printf(function(info) {
  return `${date}-${info.level}: ${JSON.stringify(info.message, null, 4)}\n`;
});
const logger = winston.createLogger({
  transports: [
    new winston.transports.Console({
      level: level,
      format: winston.format.combine(winston.format.colorize(), logFormat)
    })
  ]
});

日志的格式如下:

是彩色的BTW

代码语言:javascript
复制
2018-03-01T19:49:54.042Z-info: "----- Customer Details ------"

2018-03-01T19:49:54.042Z-info: [
    {
        "A": 1,
        "B": 2
    }
]
票数 29
EN

Stack Overflow用户

发布于 2019-02-14 05:10:34

这是Winston v3+的一个解决方案

代码语言:javascript
复制
  let winstonFormat = winston.format.json();
  if (NODE_ENV == "development") {
    winstonFormat = winston.format.combine(winston.format.json(), winston.format.prettyPrint());
  }

  const log = winston.createLogger({
    level: "info",
    format: winstonFormat,
    defaultMeta: {app: "myapp"},
    transports: [
      new winston.transports.File({filename: "/dev/stderr", level: "warn"}),
      new winston.transports.File({filename: "/dev/stdout"}),
    ],
  });
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17963406

复制
相关文章

相似问题

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