Saya mencoba mewarnai output konsol dan tidak berfungsi. Outputnya semua sama (putih). Saya menggunakan 3.0.0-rc1.
const winston = require('winston');
const logLevels = {
levels: {
error: 0,
warn: 1,
info: 2,
http: 3,
sql: 4,
debug: 5
},
colors: {
error: "red",
warn: "darkred",
info: "black",
http: "green",
sql: "blue",
debug: "gray"
}
};
winston.addColors(logLevels);
const logger = winston.createLogger({...});
logger.add(new winston.transports.Console({colorize: true}));
Saya juga mencoba saran di sini tetapi itu juga tidak berhasil:
logger.add(new winston.transports.Console({format: winston.format.combine(formatter, winston.format.colorize())}));
Terima kasih,
Alvaro
Saya bisa membuatnya berfungsi sebagian menggunakan dokumentasi untuk logform .
const alignedWithColorsAndTime = winston.format.combine(
winston.format.colorize(),
winston.format.timestamp(),
winston.format.align(),
winston.format.printf(info => `${info.timestamp} [${info.level}]: ${info.message}`),
);
Tidak yakin bagaimana menangani membuang argumen JSON.
const alignedWithColorsAndTime = winston.format.combine(
winston.format.colorize(),
winston.format.timestamp(),
winston.format.align(),
winston.format.printf((info) => {
const {
timestamp, level, message, ...args
} = info;
const ts = timestamp.slice(0, 19).replace('T', ' ');
return `${ts} [${level}]: ${message} ${Object.keys(args).length ? JSON.stringify(args, null, 2) : ''}`;
}),
);
Setelah dua jam saya berhasil membuat warna berfungsi, terima kasih @Xeoncross !
mulai winston dan juga mendapat konsol tanpa warna ...
saya menggunakan kode definisi transportasi berikutnya:
new winston.transports.Console({
format: winston.format.simple()
})
setelah membaca utas ini saya melakukan ini:
new winston.transports.Console({
format: winston.format.combine(
winston.format.simple(),
winston.format.colorize()
)
})
dan tidak mendapat perbedaan.
jadi saya mengubah posisi format pewarnaan menjadi 1 dan membuat warna berfungsi
new winston.transports.Console({
format: winston.format.combine(
winston.format.colorize(),
winston.format.simple()
)
})
Terima kasih @abrakadobr ! yang melakukan trik.
tidak ada yang berfungsi untuk saya, masih tidak ada warna, dan menggeser colorize ke atas menyebabkan bidang info mencatat string yang disandikan
Saya membuat inti yang menunjukkan cara menggunakan winston & morgan logging di aplikasi expressjs sederhana.
Terima kasih @Xeoncross! Menambahkan winston.format.colorize() ke format saya berhasil. Menarik bahwa ini tidak ada di dokumen. Atau setidaknya saya tidak dapat menemukannya di dokumen.
Saya menyukai fleksibilitas baru, tetapi saya berharap ini mendapatkan dokumentasi yang lebih baik. Saya hanya menghabiskan waktu terlalu lama untuk membuat ini berfungsi. Contoh plug-n-play bagi kita yang menggunakan winston.cli()
akan sangat membantu, sesuatu yang mirip dengan contoh @Xeoncross.
Adakah yang tahu bagaimana melakukannya dengan versi rilis saat ini? Versi kandidat rilis bukanlah pilihan.
Dalam membaca kode, Anda juga dapat mengirim all
ke colorize
sebagai opsi untuk mewarnai seluruh log.
colorize({ all: true })
@markhealey Saya sudah menghapus dependensi winston dari package.json saya dan kemudian saya membaca pesan Anda. Terima kasih :+1:
Terima kasih @Xeoncross. Lihatlah: https://github.com/winstonjs/logform/blob/master/timestamp.js . Anda dapat memformat stempel waktu dengan parameter opt format
. Tapi hati-hati dengan zona waktu
format.combine(
format.colorize(),
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.align(),
format.printf(info => {
const { timestamp, level, message, ...extra } = info;
return `${timestamp} [${level}]: ${message} ${
Object.keys(extra).length ? JSON.stringify(extra, null, 2) : ''
}`;
}),
)
format.colorize({all:true}
tidak benar-benar berfungsi jika stempel waktu disertakan, berikut adalah contoh yang berfungsi untuk mewarnai seluruh baris:
const colorizer = winston.format.colorize();
const logger = winston.createLogger({
level: 'debug',
format: combine(
winston.format.timestamp(),
winston.format.simple(),
winston.format.printf(msg =>
colorizer.colorize(msg.level, `${msg.timestamp} - ${msg.level}: ${msg.message}`)
)
),
transports: [
new transports.Console(),
]
});
periksa logger berfitur lengkap saya
Terima kasih @abrakadobr , solusi Anda berhasil untuk saya.
@tommuhm saya melihat cacat sekarang. Tidak ada opsi format bawaan untuk colorize
jika seseorang memang ingin mewarnai seluruh printf
. Apakah ini masuk akal bagi Anda?
const { createLogger, format, transports } = require('../');
const logger = createLogger({
level: 'debug',
format: format.combine(
format.timestamp(),
format.simple(),
format.printf(info => `${info.timestamp} - ${info.level}: ${info.message}`),
format.colorize({ all: true })
),
transports: [
new transports.Console(),
]
});
logger.error('wowza');
Hal yang sulit adalah membuat colorizer
diketahui ketika info
telah "diserialisasikan" (yaitu ketika info[MESSAGE]
telah disetel ke string). Tindak lanjuti PR ke logform
segera – terima kasih telah mempelajarinya!
@Xeoncross kami juga dapat mencapai hal yang sama dengan cara yang lebih sederhana
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, colorize, printf } = format;
const level = process.env.LOG_LEVEL || 'debug';
const myFormat = printf(({ level, message, label, timestamp }) => {
return `${timestamp} ${level}: ${message}`;
});
const logger = createLogger({
format: combine(colorize(), timestamp(), myFormat),
transports: [new transports.Console()]
});
referensi: https://www.npmjs.com/package/winston#using -custom-logging-levels
saya menggunakan winston untuk masuk ke cloudwatch dan mencoba menambahkan warna tetapi alih-alih simbol warna muncul .. Saya mencoba semua solusi yang disebutkan di atas. di bawah ini adalah kode saya
const winston = require('winston');
const {transports, format, createLogger } = winston;
const { combine,errors,timestamp} = format;
const colorizer = winston.format.colorize();
const logger = createLogger({
level: process.env.LOG_LEVEL,
prettyPrint : true,
format: combine(
winston.format.timestamp(),
winston.format.simple(),
winston.format.printf(msg =>
colorizer.colorize(msg.level, `${msg.timestamp} - ${msg.level}: ${msg.message}`)
)
),
transports: [
new transports.Console()
]
});
module.exports = {logger};
dan di keluaran konsol cloudwatch adalah
[34m2019-08-22T13:00:03.325Z - debug: res by id: [
{
"isActive": true,
"value": "fNUMheWiwXayKsaYCbUeA7Gg7BtEPIUbakB56XH1",
"id": "oehlwqlcve",
"userId": "6b347b41-ddef-4842-83a0-1cd5ca358482"
}
][39m
ini [39m muncul alih-alih warna. Ada saran?
-22T13:00:03.325Z - debug: res oleh id: [
Saya mengalami masalah yang sama juga. Apakah Anda berhasil memperbaikinya?
-22T13:00:03.325Z - debug: res oleh id: [
Saya mengalami masalah yang sama juga. Apakah Anda berhasil memperbaikinya?
Ada pembaruan tentang itu? Apakah Anda menyelesaikannya entah bagaimana?
@Xeoncross kami juga dapat mencapai hal yang sama dengan cara yang lebih sederhana
const { createLogger, format, transports } = require('winston'); const { combine, timestamp, colorize, printf } = format; const level = process.env.LOG_LEVEL || 'debug'; const myFormat = printf(({ level, message, label, timestamp }) => { return `${timestamp} ${level}: ${message}`; }); const logger = createLogger({ format: combine(colorize(), timestamp(), myFormat), transports: [new transports.Console()] });
referensi: https://www.npmjs.com/package/winston#using -custom-logging-levels
Itu berhasil bagi saya di iTerm di MacOS
Tautan di bawah ini berfungsi untuk saya:
https://stackoverflow.com/questions/51012150/winston-3-0-colorize-whole-output-on-console
Komentar yang paling membantu
Saya bisa membuatnya berfungsi sebagian menggunakan dokumentasi untuk logform .
Tidak yakin bagaimana menangani membuang argumen JSON.
Perbarui di sini adalah apa yang saya kerjakan: