winston 日志中的奇怪符号
Strange symbols in log with winston
初始化:
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: 'error',
prettyPrint: true,
colorize: true,
silent: false,
timestamp: false,
json: false
});
例如我这样调用记录器:
logger.info("isSandBox: " + isSandBox);
在我的 IDEA 中我看到:
info: isSandBox: true
但是当我将此脚本上传到 Ubuntu 服务器时,我在日志中看到:
^[[32minfo^[[39m: isSandBox: true
我该如何解决?
您看到的代码是颜色代码转义。它们仅在登录到 terminal/console 时有用,因为它们会被终端解释为更改文本颜色。如果日志最终保存在文件中,则代码会被存储 as-is,并没有多大用处。
您可以检查输出是否为终端,并且仅在终端为以下时才启用着色:
logger.add(winston.transports.Console, {
level : 'error',
prettyPrint : true,
colorize : process.stdout.isTTY,
silent : false,
timestamp : false,
json : false
});
有关 isTTY
标志的更多信息 here。
万一你没能解决这个问题..我现在能解决了。
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, label, colorize, printf } = format;
const myFormat = printf(info => {
return `${info.timestamp} ${info.label} ${info.level}: ${info.message}`;
});
const logger = createLogger({
format: combine(
colorize(),
label({ label: '[app-server]' }),
timestamp(),
myFormat
),
transports: [new transports.Console()]
});
module.exports = logger;
myFormat 变量允许它。 None 的开箱即用格式化程序能够转换颜色代码转义。
初始化:
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: 'error',
prettyPrint: true,
colorize: true,
silent: false,
timestamp: false,
json: false
});
例如我这样调用记录器:
logger.info("isSandBox: " + isSandBox);
在我的 IDEA 中我看到:
info: isSandBox: true
但是当我将此脚本上传到 Ubuntu 服务器时,我在日志中看到:
^[[32minfo^[[39m: isSandBox: true
我该如何解决?
您看到的代码是颜色代码转义。它们仅在登录到 terminal/console 时有用,因为它们会被终端解释为更改文本颜色。如果日志最终保存在文件中,则代码会被存储 as-is,并没有多大用处。
您可以检查输出是否为终端,并且仅在终端为以下时才启用着色:
logger.add(winston.transports.Console, {
level : 'error',
prettyPrint : true,
colorize : process.stdout.isTTY,
silent : false,
timestamp : false,
json : false
});
有关 isTTY
标志的更多信息 here。
万一你没能解决这个问题..我现在能解决了。
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, label, colorize, printf } = format;
const myFormat = printf(info => {
return `${info.timestamp} ${info.label} ${info.level}: ${info.message}`;
});
const logger = createLogger({
format: combine(
colorize(),
label({ label: '[app-server]' }),
timestamp(),
myFormat
),
transports: [new transports.Console()]
});
module.exports = logger;
myFormat 变量允许它。 None 的开箱即用格式化程序能够转换颜色代码转义。