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.
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?
Berikut ini contohnya: https://github.com/paolotremadio/homeautomation-winston-logger/blob/master/index.js
@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
Komentar yang paling membantu
@masoudltf : Anda benar, winston (3.1.0) terbaru tidak
Faktanya, sepertinya tidak ada metode yang menggembungkan log, hanya instance Zlib