2013-03-05 13 views
17

मैं अपने नोड एप्लिकेशन को चलाने के लिए forever का उपयोग कर रहा हूं। जब मैं हमेशा के लिए शुरू करता हूं तो मैं निर्दिष्ट करता हूं कि लॉग कहां लिखना है। मैं लॉग में शामिल करने के लिए भी निर्दिष्ट करता हूं। यहां समस्या यह है कि महीनों के दौरान मेरा लॉग नियंत्रण से बाहर निकलने जा रहा है।नोडजेएस/हमेशा के लिए संग्रह लॉग

क्या अंतराल पर संग्रह/रोल लॉग करने का कोई तरीका है, यानी प्रत्येक दिन रोल फ़ाइल में किसी अन्य फ़ाइल (यानी सर्वर-2013-3-5.log) में लॉग फ़ाइल में संग्रह/संग्रह करें। इस तरह मैं पुरानी लॉग फ़ाइलों को आवश्यकतानुसार हटा/हटा सकता हूं।

मैंने अभी अपने लॉगर के लिए विंस्टन का उपयोग करना शुरू कर दिया है और मैं वहां कुछ भी नहीं आया हूं जो मदद करेगा।

कोई विचार?

+0

आपने इसे अंत में कैसे हल किया? – JustGoscha

उत्तर

34

हमेशा के लिए लॉग रोटेशन का समर्थन नहीं करता है और लॉग रोटेशन अभी भी विंस्टन के लिए pending feature request है।

आप logrotate का उपयोग कर सकते हैं जो अधिकांश लिनक्स वितरण में शामिल है और सिस्टम लॉग फ़ाइलों को घूर्णन के लिए उपयोग किया जाता है, साथ ही अपाचे जैसे अन्य सॉफ़्टवेयर द्वारा उपयोग किया जाता है।

/etc/logrotate.d/

/path/to/server.log { 
    daily   # how often to rotate 
    rotate 10  # max num of log files to keep 
    missingok  # don't panic if the log file doesn't exist 
    notifempty # ignore empty files 
    compress  # compress rotated log file with gzip 
    sharedscripts # postrotate script (if any) will be run only once at the end, not once for each rotated log 
    copytruncate # needed for forever to work properly 
    dateext  # adds date to filename 
    dateformat %Y-%m-%d. 
} 

करने के लिए एक फ़ाइल जोड़ें more logrotate examples देखें।

+2

विंस्टन के साथ लॉग रोटेशन अब संभव है: https://github.com/flatiron/winston/pull/205 – JCM

+2

'साझा स्क्रिप्ट्स': "साझा स्क्रिप्ट का अर्थ है कि पोस्ट्रोटेट स्क्रिप्ट केवल एक बार चलाया जाएगा (पुराने लॉग को संपीड़ित करने के बाद), एक बार घुमाए गए प्रत्येक लॉग के लिए नहीं। " [मैन लॉग्रोटेट] (http://linuxcommand.org/man_pages/logrotate8.html) –

+0

@JCM विंस्टन में इस नई सुविधा का उपयोग करने के लिए हमेशा एक कॉन्फ़िगर कैसे किया जाता है? क्या मुझे हमेशा के लिए प्रोग्रामेटिक उपयोग के लिए कमांड लाइन उपयोग से स्विच करना है? – sheldonh

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