2009-11-19 11 views
5

मैंने logrotate.conf उदाहरणों और मेरी /etc/logrotate.d निर्देशिका में सब कुछ देखा। कहीं भी मैं इन फ़ाइलों में चर पर दस्तावेज खोजने में सक्षम था।लॉगरोटेट कॉन्फ़िगरेशन फ़ाइलों में समर्थित चर हैं?

मैं लिख रहे एक एप्लिकेशन के लॉग घूर्णन के लिए एक कॉन्फ़िगरेशन फ़ाइल बनाने की कोशिश कर रहा हूं। मैं निर्देशिका है जहाँ लॉग एक बार जमा हो जाती है सेट करना चाहते हैं, और फिर इसे एक चर के रूप में उपयोग करते हैं, जैसे इतना:

my_app_log_dir=/where/it/is/deployed/logs 

${my_app_log_dir}/*.log ${my_app_log_dir}/some_sub_dir/*.log { 
    missingok 
    # and so on 
    # ... 
} 

संभव है कि है?

उत्तर

1

सीधे कॉन्फ़िगरेशन फ़ाइल संख्या में (जहां तक ​​मेरा ज्ञान लॉग्रोटेट में जाता है)।

अन्य समाधान:

  • का प्रयोग करें एक निर्देशिका से विन्यास फाइल के कुछ हिस्सों को शामिल करने का विकल्प भी शामिल है। यदि आपके पास आपके एप्लिकेशन के लिए कोई पैकेज है, तो यह आपकी मदद कर सकता है, पैकेज उस निर्देशिका में एक फ़ाइल छोड़ सकता है जिसमें केवल आपके ऐप के लिए प्रविष्टियां हों।
6

आप प्राप्त कर सकते हैं क्या आप इस kludge को लागू करने से तलाश कर रहे हैं:

मेरी-logrotate.conf (नोट: दोहरे उद्धरण चिह्नों " हैं अनिवार्य है, यह भी ध्यान दें कि फ़ाइल नाम पर प्रकट करने की जरूरत नहीं है एक ही पंक्ति)

"*.log" 
"some_sub_dir/*.log" 
{ 
    missingok 
    # and so on 
    # ... 
} 

तब वास्तविक logrotate स्क्रिप्ट - my-logrotate.sh

#!/bin/sh 

set -eu 

cd "${my_app_log_dir}" 
exec logrotate /path/to/my-logrotate.conf 

अब आप अपने crontab में logrotate.sh जोड़ सकते हैं।

1

आप फ्लाई पर उपयुक्त कॉन्फ़िगरेशन फ़ाइल बनाने के लिए, या तो इंस्टॉलेशन समय पर या लॉग्रोटेट चलाने से पहले एक बैश "here document" का उपयोग कर सकते हैं।

एक bash स्क्रिप्ट इस प्रकार दिखाई देंगे:

cat >rt.conf <<. 
"${my_app_log_dir}/*.log" { 
    rotate 5 
    size 15k 
    missingok 
} 
. 

logrotate rt.conf 
संबंधित मुद्दे