2016-08-09 8 views
8

को छोड़कर विंस्टन का उपयोग करके लॉग को घुमाने के लिए लॉग इन करने के लिए मुझे वर्तमान दिन के लिए फ़ाइल को छोड़कर दैनिक लॉग घुमाने की आवश्यकता है। मैं विंस्टन और विंस्टन-दैनिक-घुमाव-फ़ाइल पुस्तकालयों का उपयोग कर रहा हूं।पहले दिन

निम्नलिखित उदाहरण में, फ़ाइल "info.log.2016-08-09" पहली बार उत्पन्न होती है जब मैं नोड निष्पादित करता हूं।

लेकिन, मुझे वास्तव में "info.log" फ़ाइल जेनरेट करने की आवश्यकता है, और इस दिन के बाद, इसका नाम बदलकर "info.log.2016-08-09" कर दिया जाना चाहिए, और इसके लिए एक नया "info.log" बनाना चाहिए वर्तमान दिन मुझे समझ में आता है कि यह अन्य अनुप्रयोगों में सामान्य व्यवहार है।

var logger = new (winston.Logger)({ 
    transports: [ 
    new dailyRotateFile( 
     { 
     //your definition of rotate file 
     }), 
    new (winston.transports.File)({ filename: 'info.log' }) 
    ] 
}); 

और फिर नष्ट करने के लिए कुछ क्रॉन की स्थापना:

var logger = new (winston.Logger)({ 
 
    transports: [ 
 
    new dailyRotateFile( 
 
     { 
 
     name: 'cronInfo', 
 
     filename: path.join(__dirname,"log", "info.log"), 
 
     level: 'info', 
 
     timestamp: function(){     
 
     return utils.formatDate(new Date(), "yyyy-mm-dd'T'HH:MM:ss.l'Z'") 
 
     }, 
 
     formatter: function(options) { 
 
      return options.timestamp() +' ['+ options.level.toUpperCase() +'] '+ (undefined !== options.message ? options.message : '') + 
 
       (options.meta && Object.keys(options.meta).length ? '\n\t'+ JSON.stringify(options.meta) : '');   
 
     }, 
 
     json:false, 
 
     datePattern:".yyyy-MM-dd" 
 
    }) 
 
    ] 
 
}); 
 

+0

जब एप्लिकेशन शुरू होता है तो आप टाइमर को 'टाइम-टू-चेंज-लॉग-नाम' पर सेट कर सकते हैं। टाइमर पर: लॉग-फ़ाइल का नाम बदलें, 'Winston' कॉल से बचने के लिए' सिंक' फ़ंक्शन 'द्वारा नया 'info.log' बनाएं, अगला टाइमर सेट करें। शायद, 'Winston' को लॉग-फ़ाइल डिस्क्रिप्टर/स्ट्रीम अपडेट करने के लिए पुनरारंभ करना होगा (मुझे यकीन नहीं है कि यह संभव है)। –

+0

https://github.com/winstonjs/winston-daily-rotate-file/issues/23 – Arjan

उत्तर

2

खैर एक वैकल्पिक हल info.log को

बस इस तरह

एक और परिवहन के लिए किया जा सकता है मध्यरात्रि में info.log, यानी node-schedule

हालांकि, इस दृष्टिकोण के साथ मध्यरात्रि के माध्यम से कुछ चलने पर थोड़ा असंगतता हो सकती है, यह कुछ पंक्तियों को info.log में लॉग कर सकती है जो अगले दिन से संबंधित है और फिर इसे हटा दिया जाता है, इसलिए info.log अधूरा हो सकता है।

लेकिन इस info.log.2016-08-09 प्रारूप के साथ सभी लॉग पूर्ण और अप्रभावित हैं।

तो यह विचार करना है कि एक दिन के लिए अपूर्ण जानकारी.लॉग होने का बहुत छोटा मौका स्वीकार्य है। (हालांकि आप अधिक उन्नत चेकर बना सकते हैं जो फ़ाइल को न हटाएं, लेकिन ऐसा लगता है कि नए दिन की मौजूद फाइल मौजूद है और यदि ऐसा है, तो यह अंदर दिखता है और फिर info.log से पिछले दिनों से केवल लॉग हटा देता है और यह इसे हटा नहीं देता है सभी एक बार में)

संबंधित मुद्दे