gpt4 book ai didi

amazon-cloudwatch - 而不是颜色,符号出现在 aws cloudwatch 控制台与 winston

转载 作者:行者123 更新时间:2023-12-05 07:20:12 28 4
gpt4 key购买 nike

我正在使用 winston 进行如下日志记录。

const winston = require('winston');
const {transports, format, createLogger } = winston;
const { combine,errors, splat,timestamp } = format;

const logger = createLogger({
level: process.env.LOG_LEVEL,
transports: [
new transports.Console({
format: combine(
timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
errors({stack: true}),
splat(),
winston.format.colorize(),
format.json()
)
})
]
});

module.exports = {logger};

并且在控制台中它显示符号而不是颜色,如下所示

{ 
"message": "apiKeyId: ef12dv3n3b",
"level": "\u001b[34mdebug\u001b[39m",
"timestamp": "2019-08-20 07:07:16"
}

我该如何解决?

最佳答案

我刚刚也在尝试从 NodeJS 输出到 Cloudwatch。并发现了同样的问题,根据我使用的组合,级别和/或消息出现奇怪的字符编码。我想这也是因为颜色。并找到了这个问题。

我猜你不能改变颜色。

我发现了一些 Chrome 扩展程序(未尝试),例如“Colorize CloudWatch”,这可能是一种绕过它的方法。我假设他们根据级别在浏览器中设置颜色。

我目前正在试用 WinstonCloudwatch 传输而不是控制台 (https://github.com/lazywithclass/winston-cloudwatch),到目前为止还没有看到字符编码问题。尽管据我所见,Cloudwatch 仍然 控制颜色,因此您会得到标准的灰色/绿色 JSON。

这是我目前正在试验的格式化程序(没有颜色),设置为 messageFormatter: cloudwatchFormat:

const cloudwatchFormat = function (info, opts) {
const message = info.message;
const splat = info[Symbol.for('splat')];
const splatFormatted = splat ? splat.map((s) => (typeof s === 'string' ? s : JSON.stringify(s))) : '';

return JSON.stringify({
timestamp: new Date().toISOString(),
level: info.level,
message: message,
variables: splatFormatted
});
}

关于amazon-cloudwatch - 而不是颜色,符号出现在 aws cloudwatch 控制台与 winston,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57568393/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com