2012-03-04 5 views
25

के साथ फ़ाइल नाम के अंदर एक तिथि कैसे सम्मिलित करें मुझे सर्वर पर चल रहे किसी एप्लिकेशन से लॉग फ़ाइलों को घुमाने के लिए लॉग्रोटेट सेट करने की आवश्यकता है। मुझे फ़ाइल नाम के अंदर की तारीख चाहिए।लॉगरोटेट

मैंने तारीख को जोड़ने के लिए डेटक्स्ट और डेटफॉर्मैट सेट किया है। परिणाम फ़ाइल नाम है: जो भी.csv_2012-03-03

मैं टाइमस्टैम्प को सुरक्षित रखने के लिए फ़ाइल नाम का हिस्सा बनना चाहता हूं; Whatever_2012-03-03.csv।

# Daily rotation 
    daily 

# We keep original file live 
    copytruncate 

# Rotation is 1 so we have always .1 as extension 
    rotate 1 

# If file is missing keep working 
    missingok 

    sharedscripts 
    postrotate 
      day=$(date +%Y-%m-%d) 
      mv blabla.csv.1 /var/www/gamelogs/dir/blabla$day.csv 
    endscript 
} 

यह आसान है और ठीक काम करता है: एक फ़ाइल के लिए इसका इस्तेमाल करने के लिए सही है घूर्णन जबकि

उत्तर

20

लिनक्स के तहत एक फ़ाइल का फ़ाइल नाम (और नहीं विस्तार के रूप में) के भीतर तिथि सम्मिलित करने के लिए।

+0

मुझे यह समाधान पसंद है। अगर मुझे यह सही लगता है, तो इसका दुष्प्रभाव होता है: लॉग्रोटेट अब रखी गई फ़ाइलों की संख्या को सीमित नहीं करेगा। अगर इरादा है, तो यह ठीक है। – Marian

+0

अपने पोस्ट्रोटेट स्क्रिप्ट में '$ logdir -mtime + $ maxage -delete' कथन' ढूंढना काफी आसान है। – Rob

+1

@Rob, तो, वास्तव में लॉग्रोटेट का उपयोग करने का क्या मतलब है? – cnst

56

आपको एक्सटेंशन को अलग रखने में सक्षम होना चाहिए, उदा। whatever.2012-03-03.csv, निम्न कॉन्फ़िगरेशन के साथ:

whatever.csv { 
    dateext 
    dateformat .%Y-%m-%d 
    extension .csv 
    ... 
} 

नोट dateext जानबूझकर खाली है।

+0

मैंने यह कोशिश की है, लेकिन प्रत्येक रोटेशन पर तारीख जोड़ दी गई है, इसलिए मुझे 'file.log', 'file.2014-01-08.log' और' file.2014-01-07.2014-01-08 'मिलती है। लॉग' आदि – fadedbee

+1

मैंने पाया कि 'एक्सटेंशन' में '.' होना चाहिए, इसलिए सही रूप' एक्सटेंशन'csv' है। यह 'compressext' में भी 'compressext .bz2' – ADTC

+3

में भी किया गया है, साथ ही, यह 'दिनांक प्रारूप होना चाहिए।% वाई-% एम-% डी' (पहला बिंदु दिनांक के लिए है, एक्सटेंशन के लिए दूसरा)। @chrisdew शायद इसलिए है क्योंकि आप वाइल्डकार्ड का उपयोग कर रहे हैं, इसलिए * logrotate * 'file.log' और 'file.2014-01-07.log' दोनों को घुमाने की कोशिश कर रहा है। या तो एक निश्चित नाम का उपयोग करें, या घुमावदार फ़ाइलों को एक अलग निर्देशिका में स्थानांतरित करने के लिए 'olddir' विकल्प का उपयोग करें ताकि वे वाइल्डकार्ड द्वारा उठाए न जाएं। – ADTC