मैं कुछ अन्य एप्लिकेशन को देखा और जाहिरा तौर पर एक postrotate
विकल्प और एक copytruncate
option है। Copytruncate विकल्प आसान है, लेकिन मुझे लगता है कि यह कम विश्वसनीय है क्योंकि बफर को फ्लश नहीं किया जा सकता है (यानी @ जेरेक पोटिक उत्तर का पालन करें) और यहां तक कि यदि वे हैं तो आपको डुप्लिकेट प्रविष्टियां या गिराए गए प्रविष्टियां मिल सकती हैं।
postrotate
विकल्प आपको एक आदेश फ़ाइल (करीब और उसके बाद खुला) को फिर से खोलने के लिए आपके आवेदन को बताने के लिए चलाने के लिए अनुमति देता है:
इस प्रकार मान लें कि आपके postrotate
विकल्प चाहते हैं। जावा में फ़ाइल खोलने और बंद करने के दौरान आप इसे एक सिंक्रनाइज़ ब्लॉक या किसी प्रकार के लॉक के साथ करेंगे और बेशक किसी भी बफर को फ्लश करेंगे।
चलें अपने अनुप्रयोग मान myapp
कहा जाता है:
/var/log/myapp/*.log {
weekly
missingok
rotate 20
compress
delaycompress
notifempty
sharedscripts
postrotate
/etc/init.d/myapp rotate-logs > /dev/null
endscript
}
आदेश /etc/init.d/myapp rotate-logs
को बंद करने और लॉग को फिर से खोलने के लिए एप्लिकेशन को यह संकेत दे करने की आवश्यकता होगी:
आप एक फ़ाइल /etc/logrotate.d/myapp
में की तरह कुछ के साथ होता है फ़ाइलें।
सिग्नलिंग हिस्सा काफी मुश्किल है और यह निर्भर करता है कि आपके पास किस तरह का ऐप है क्योंकि जावा आईपीसी का समर्थन नहीं करता है (यानी यूनिक्स सिग्नल) ताकि आपको पोर्ट खोलना पड़े या मौजूदा पोर्ट का उपयोग 8080 (यानी एक सर्वलेट कंटेनर के मामले में HTTP REST कमांड) लॉग इन फ़ाइलों को बंद करने और फिर से खोलने के लिए अपने ऐप को बताने के लिए।
स्रोत
2017-01-31 17:03:41