Winston: Cara yang lebih baik untuk mengubah level log secara dinamis

Dibuat pada 19 Okt 2017  ·  4Komentar  ·  Sumber: winstonjs/winston

Sesuai Dokumentasi Winston

Anda juga dapat mengubah level log transportasi secara dinamis:

Winston 2.x

  var logger = new (winston.Logger)({
    transports: [
      new (winston.transports.Console)({ level: 'warn' }),
      new (winston.transports.File)({ filename: 'somefile.log', level: 'error' })
    ]
  });
  logger.debug("Will not be logged in either transport!");
  logger.transports.console.level = 'debug';
  logger.transports.file.level = 'verbose';
  logger.verbose("Will be logged in both transports!");

Winston 3.x

const transports = {
  console: new winston.transports.Console({ level: 'warn': level: 'warn' }),
  file: new winston.transports.File({ filename: 'combined.log', level: 'error' })
};

const logger = winston.createLogger({
  transports: [
    transports.console,
    transports.file
  ]
});

logger.info('Will not be logged in either transport!');
transports.console.level = 'info';
transports.file.level = 'info';
logger.info('Will be logged in both transports!');

Bagaimana saya bisa mengubah level di 3.0 jika saya membuat seperti ini
var logger = new (winston.Logger)({ transports: [ new (winston.transports.Console)({ level: 'warn' }), new (winston.transports.File)({ filename: 'somefile.log', level: 'error' }) ] });


Bukankah jelas bahwa versi sebelumnya dari mekanisme perubahan level dinamis jauh lebih baik daripada yang baru.

duplicate

Semua 4 komentar

Saya juga mencari solusi untuk winston 3.x seperti di atas

Saya memiliki transport di luar fungsi winston.create() dan berubah dari luar, itu berhasil!

var transportsList =  const transports = {
  console: new winston.transports.Console({ level: 'warn': level: 'warn' }),
  file: new winston.transports.File({ filename: 'combined.log', level: 'error' })
};
var logger = new (winston.Logger)({
  transports: transportsList
});

//Then change below
transportsList.console.level = 'silly'

Penutupan sebagai duplikat #1191. Ini ada di peta jalan kami dan akan diperbaiki sebelum [email protected] dirilis pada 29 Mei 2018.

Ini berhasil untuk saya, saya memberi setiap transport nama, Dikunci dengan nama sehingga saya dapat memiliki akses ke sana melalui ref karena objek logger tidak dapat diakses secara langsung.
`

    var self = this;
    self.logger = self.winston.createLogger({
            levels:self.winston.config.syslog.levels
            ,transports:
                [
                    new self.winston.transports.Console({
                        level: self.config.console.level.ref
                        ,formatter: self._consoleLogFormatter
                        ,name: 'console'
                    })
                ]
        });

        self.transports = _.keyBy(self.logger.transports,"name");
        self.transports.console.level = 'info';

`

Apakah halaman ini membantu?
0 / 5 - 0 peringkat