2013-01-03 14 views
8

मैं एपीसी के साथ एक ओपोड और एप्लिकेशन कैश के रूप में php5 एफपीएम चला रहा हूं। हमेशा की तरह, मैं एक फाइल में php त्रुटियों को लॉगिंग कर रहा हूँ।php logs के साथ logrotate को कॉन्फ़िगर कैसे करें

चूंकि यह काफी बड़ा हो रहा है, इसलिए मैंने लॉग्रोटेट को कॉन्फ़िगर करने का प्रयास किया। यह काम करता है, लेकिन घूर्णन के बाद, php मौजूदा लॉगफाइल पर लॉग ऑन करना जारी रखता है, भले ही उसका नाम बदल दिया जाए। इसका परिणाम scripts.log में 0 बी फ़ाइल है, और scripts.log.1 आगे बढ़ने के लिए जारी है।

मुझे लगता है कि (कोशिश नहीं की है) पोस्टरोटेट में php5-fpm रीलोड चलाने से यह हल हो सकता है, लेकिन यह हर बार मेरे एपीसी कैश को साफ़ कर देगा।

क्या कोई जानता है कि यह ठीक से काम कैसे प्राप्त करें?

+0

जब आप लॉग घुमाते हैं, तो मुझे लगता है कि आपको भी एफपीएम को पुनरारंभ करना होगा। या आपको वास्तव में एक नया इनोड बनाने और मौजूदा फ़ाइल को छोटा करने के लिए लॉग्रोटेट बताना होगा। अन्यथा एफपीएम लॉगफाइल इनोड में लिखना जारी रखेगा, इसलिए अकेले फ़ाइल का नाम बदलने से मदद नहीं मिलती है (जो आप अपने प्रश्न में व्यवहार के रूप में वर्णन करते हैं)। – hakre

+0

copytruncate केवल आपका जीवन बचतकर्ता है .. – Satish

उत्तर

5

मैंने पाया कि "copytruncate" logrotate करने का विकल्प यह सुनिश्चित करता है कि इनोड नहीं बदलेगा। मूल रूप से [एसआईसी!] क्या देख रहा था।

शायद यही वह है जिसे आप ढूंढ रहे हैं। से लिया गया: How does logrotate work? - Linuxquestions.org

जैसा कि मेरी टिप्पणी में लिखा गया है, आपको PHP को उसी (नामित) फ़ाइल में लिखने से रोकने की आवश्यकता है।

: एक फाइल कॉपी कर रहा है सामान्य रूप से एक नया एक बनाता है, और छोटा रूप में अच्छी तरह है कि विकल्प 'के नाम का हिस्सा है, इसलिए मैं यह मान लेगा, copytruncate विकल्प एक आसान समाधान ( from the manpage) है

भी देखें:

+1

बिल्कुल सही! एक जादू की तरह काम करता है –

5
एक और इसलिए

मेरे सर्वर पर पाया गया ल्यूशन लॉग को फिर से खोलने के लिए php को बताना है। मुझे लगता है कि nginx में यह सुविधा भी है, जो मुझे लगता है कि यह काफी आम जगह होना चाहिए। यहां मेरी कॉन्फ़िगरेशन है:

/var/log/php5-fpm.log { 
     rotate 12 
     weekly 
     missingok 
     notifempty 
     compress 
     delaycompress 
     postrotate 
       invoke-rc.d php5-fpm reopen-logs > /dev/null 
     endscript 
} 
संबंधित मुद्दे