Winston: File Transportasi Winston - opsi zipArchive tidak berfungsi dengan benar

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

Jika Anda menggunakan file transport berikut:

new (winston.transports.File)({
          level: 'silly',
          filename: './test.log',
          maxsize: 500000,
          maxFiles: 4,
          format: format.combine(
            format.splat(),
            format.label({ label: 'test' }),
            format.timestamp(),
            format.prettyPrint(),
            format.printf( log => {
              return '[ ' + log.timestamp + ' ][ ' + log.level + ' ][ '+ log.label + ' ] ' + log.message;
            })
          ), tailable: true,
          zippedArchive: true,
          exitOnError: false
        }) );

Hasil "test.log" di-zip.

Ini salah karena dokumentasi mengatakan bahwa:

zippedArchive: Jika benar, semua file log kecuali yang sekarang akan di-zip.

winston-file

Komentar yang paling membantu

@masoudltf : Anda benar, winston (3.1.0) terbaru tidak
Faktanya, sepertinya tidak ada metode yang menggembungkan log, hanya instance Zlib

Semua 22 komentar

Saya memiliki masalah yang sama persis dengan 3.0.0-rc4. dan bahkan file zip tidak berguna, tidak ditambahkan saat Anda login, dan saya tidak dapat membacanya dengan gzcat.

Saya memiliki masalah yang sama dengan 3.0.0.

    new winston.transports.File({
      level: 'info',
      filename: LOGS_PATH,
      handleExceptions: true,
      maxsize: MAX_LOG_SIZE,
      timestamp: true,
      maxFiles: 5,
      eol: '\r\n',
      prettyPrint: true,
      zippedArchive: true
    })

Ini menghasilkan file terbaru yang di-gzip. Di 2.4.2, semua kecuali file terbaru di-zip.

Dalam kasus saya, file log tidak di-zip sama sekali, meskipun .gz telah ditambahkan.

λ file somelog.log.gz
somelog.log.gz: ASCII text

Gzip akan terlihat seperti:

λ gzip package.json
λ file package.json.gz
package.json.gz: gzip compressed data, was "package.json", last modified: Thu Aug 23 16:41:38 2018, from Unix, original size 2354

Saya menggunakan paket ini di semua proyek saya: https://github.com/paolotremadio/homeautomation-winston-logger

Semua file yang dipancarkan adalah .gz tetapi masih dalam bentuk teks biasa (jadi tidak benar-benar dikompresi). Bisakah seseorang memberi tahu saya apa yang saya lakukan salah?

saya memiliki masalah yang sama, hanya ".gz" yang ditambahkan ke nama file dan tidak di-gzip dengan benar.

adakah yang bisa membantu kami?

@masoudltf : aneh, semua log harus di-zip (bahkan jika yang pertama tidak boleh di-zip).
Bisakah Anda membagikan kodenya?

@KingRial
terima kasih atas balasannya.
ini kode saya:

const defaultLogFormat = [
    winston.format.timestamp(),
    winston.format.align(),
    winston.format.printf(info => {
        return '[${info.level}] [${info.timestamp}] ${info.message}';
    })
];

new winston.transports.File({
        format: winston.format.combine(
            ...defaultLogFormat
        ),
        filename: 'path-to-filename',
        maxsize: 100000000,
        zippedArchive: true
})

Berikut ini contohnya: https://github.com/paolotremadio/homeautomation-winston-logger/blob/master/index.js

@paolotremadio :
Menurut kode di atas dalam komentar saya sebelumnya, saya rasa kode ini tidak salah.

@masoudltf : Anda benar, winston (3.1.0) terbaru tidak
Faktanya, sepertinya tidak ada metode yang menggembungkan log, hanya instance Zlib

laporan bug diperlukan?

Maaf masalah ini tidak diperhatikan. Melihat https://github.com/winstonjs/winston/blob/master/lib/winston/transports/file.js#L543 sepertinya File transport mengembalikan aliran gzip atau aliran biasa. Jadi jika zipArchive benar maka log Anda harus di-zip. Ada juga beberapa kode https://github.com/winstonjs/winston/blob/master/lib/winston/transports/file.js#L663 yang terlihat terkait dengan penambahan ekstensi .gz ke file lama saat rotasi terjadi. Tapi memang saya tidak melihat sesuatu yang menunjukkan semua kecuali log terbaru akan di-zip -- lebih terlihat seperti semua atau tidak ada yang di-zip tergantung pada zipArchive. Juga, tidak ada metode untuk mengembang log, yang mungkin akan menjadi tugas pengguna jika mereka ingin melihat log itu nanti.

Jika Anda dapat mereproduksi masalah menggunakan master , beri tahu saya contoh kode apa yang Anda gunakan, dan perilaku yang Anda inginkan. Kami akan mencoba membuat semua orang senang dengan masalah ini :)

Apa yang tampaknya terjadi [dalam metode _createStream di kelas File] adalah ia mencoba membuka aliran gzip tetapi sebenarnya tidak menyalurkan apa pun ke dalamnya, sebaliknya aliran yang dapat dibaca source langsung disalurkan ke dalam file (sebagai teks biasa).
Saat memutar (opsi yang dapat disesuaikan) file hanya diganti namanya menjadi <logname>.gz tetapi tanpa kompresi apa pun di dalamnya.
Sepertinya fitur ini adalah hibrida antara cara kerjanya di versi 2.x (file dikompresi pada rotasi) dan implementasi baru di mana semua file log dibuat seperti yang sudah dikompresi (karenanya mereka semua harus memiliki gz ekstensi, juga yang pertama).
Perilaku ini (jika itu yang diinginkan pengembang) dapat dicapai dengan melakukan sesuatu seperti source.pipe(gzip).pipe(dest) setelah file tujuan dibuka, alih-alih hanya source.pipe(dest) , membiarkan aliran gzip sendirian [masih di _createStream metode].

@DABH
Saya memiliki masalah yang sama juga, saya juga memutakhirkan versi Winston saya ke versi terbaru (3.2.1) tetapi masih tidak berhasil. ketika zippedArchive true , logger hanya mengganti nama ekstensi file sehingga file zip rusak.

Apakah ada yang bekerja di patch? Kalau tidak, saya bisa mencobanya

Saya mencoba dengan hanya menggunakan aliran gzip, tetapi itu memberi saya masalah pada log terbaru (yang saat ini ditulis, dengan opsi yang dapat disesuaikan). Itu mengambil terlalu banyak waktu jadi kami lebih memilih untuk tetap di 2.x. Jika Anda dapat membuat permintaan tarik untuk memperbaikinya, itu akan sangat bagus

+1
zippedArchive opsi pada winston.transports.File rusak - file yang dihasilkan memiliki akhiran .gz, tetapi rusak.

winston versi 3.2.1

Ada pembaruan tentang ini? Adakah yang tahu versi lama yang berfungsi?

2.4.4 melakukan zip file yang diputar.

Dalam kasus kami, fungsi gzip sangat penting, jadi kami memutuskan untuk memigrasikan logging kami ke https://log4js-node.github.io/log4js-node/ dan semuanya bekerja dengan sempurna

@DABH
Saya memiliki masalah yang sama juga, saya juga memutakhirkan versi Winston saya ke versi terbaru (3.2.1) tetapi masih tidak berhasil. ketika zippedArchive true , logger hanya mengganti nama ekstensi file sehingga file zip rusak.

Masih terjadi pada 3.3.3

Apakah halaman ini membantu?
0 / 5 - 0 peringkat