Winston: Pencatatan log konsol tidak diwarnai.

Dibuat pada 10 Nov 2017  ·  22Komentar  ·  Sumber: winstonjs/winston

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

Komentar yang paling membantu

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.

Perbarui di sini adalah apa yang saya kerjakan:

  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) : ''}`;
    }),
  );

screen shot 2017-11-13 at 10 55 05 am

Semua 22 komentar

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.

Perbarui di sini adalah apa yang saya kerjakan:

  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) : ''}`;
    }),
  );

screen shot 2017-11-13 at 10 55 05 am

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

Apakah halaman ini membantu?
0 / 5 - 0 peringkat