লগগুলি ঘোরানোর সময় কীভাবে অ্যাপাচি পুনরায় লোড এড়ানো যায়?


25

আমি অ্যাপাচি অ্যাক্সেস-, ত্রুটি- এবং পুনর্লিখন-লগগুলি ঘোরানোর জন্য লোগ্রোটেট ব্যবহার করি। আমার কনফিগারেশন ফাইলটি দেখতে এমন দেখাচ্ছে:

/apache/*log {
    compress
    dateext
    rotate 365
    size=+300M
    olddir /log/old/apache
    notifempty
    missingok
    lastaction
     /bin/apache reload
    endscript
}

আমার সমস্যাটি হ'ল যখনই কোনও ঘূর্ণন ঘটে তখন অ্যাপাচি পুনরায় লোড করতে হয় কারণ অ্যাপাচি কেবল ঘোরানো লগ ফাইলে আর লেখেন না। লোগ্রোটেটে ঘোরানোর সময় আপাচি পুনরায় লোড এড়ানোর কোনও উপায় আছে কি?

উত্তর:


42

অ্যাপাচি পুনরায় লোডের প্রয়োজনীয়তার কারণ হ'ল একবার ফাইল খুললে এটি এতে একটি ফাইলহ্যান্ডেল পায় এবং এটি সেই ফাইলহ্যান্ডেলে লিখতে থাকবে। আপনি যখন ফাইলটি সরান, এটি এটি দেখতে পায় না, এটি কেবল একই হ্যান্ডেলটিতে লিখতে থাকে। আপনি যখন পুনরায় লোড করেন, এটি ফাইলটি আবার খুলবে এবং একটি নতুন হ্যান্ডেল পাবে।

পুনরায় লোড এড়াতে, ফাইলটি সরানোর পরিবর্তে, আপনি এটি অনুলিপি করতে এবং পুরানো ফাইলটি খালি করতে পারেন। সেই ভাবে অ্যাপাচি একই ফাইলহ্যান্ডেলে লেখা রাখতে পারে। আপনি লোগ্রোটেট কনফিগারেশন ফাইলে "কপিরাইটআরঙ্কেট" বিকল্পটি যুক্ত করে এটি করেন:

/apache/*log {
    copytruncate
    compress
    dateext
    rotate 365
    size=+300M
    olddir /log/old/apache
    notifempty
    missingok
}

আপনার উত্তরের জন্য ধন্যবাদ. সুতরাং আমি অনুমান করি আমি যখন lastaction echo "" | /apache/*log endscriptফাইল হ্যান্ডেল যুক্ত করি তখন "হারানো" হয় না?
বীণা

3
দুঃখিত, আমার "কপি" এর পরিবর্তে "কপিরাইটআরঙ্কেট" বলা উচিত ছিল। তাহলে আপনার শেষবারের জিনিসটির কোনও দরকার নেই। আমি আমার ক্যাফিন প্রবাহে প্রচুর রক্ত ​​থাকার জন্য দোষ দিই :-)
জেনি ডি

কবজির মতো কাজ করে :)
বীণা

4
@harp সাবধান হন, logrotateডক বলেছেন: "নোট করুন যে ফাইলটি অনুলিপি করা এবং এটি কেটে ফেলার মধ্যে খুব অল্প সময়ের স্লাইস রয়েছে, যাতে কিছু লগিং ডেটা হারিয়ে যেতে পারে।"
টোটার

কিছু ডেটা নষ্ট হয়ে যাওয়ার সম্ভাবনা বাদে অন্য কোনও ব্যবহার ডাউনডাইড বলে copytruncate?
লিও গ্যালেগিলোস

5

আমি আপনাকে http://cronolog.org/ ব্যবহার করার পরামর্শ দিচ্ছি

আমি এটি এইভাবে ব্যবহার করি:

CustomLog     "|/usr/local/sbin/cronolog -S /var/log/httpd/t3.CCC.eu-access_log -P /var/log/httpd/t3.CCC.eu-access_log.prev /var/log/httpd/t3.CCC.eu-%Y.log" combined

1
ওয়েব সার্ভারে প্রচুর ট্র্যাফিক থাকলে কোনও বাহ্যিক প্রোগ্রামে পাইপিং করা সমস্যা হতে পারে। তবে ফাইলহ্যান্ডেল ইস্যুটি খুব সুন্দরভাবে এড়ানো যায় না।
জেনি ডি

একটি ভাল বিকল্প মনে হচ্ছে। ক্রোনোলজ কি ফ্লাইটে সংকোচনের কাজ করে?
বীণা

অ্যাপাচি 2-ইউটিস প্যাকেজে একই অ্যাপ্লিকেশন "রোটেটলগস" রয়েছে। বিভিন্ন অ্যাপাচি ভার্চুয়াল সার্ভার থেকে একই লগ ফাইলে "পাইপ" না দেওয়ার জন্য কেবল সাবধান হন - তারা একে অপরের উপর স্টম্প করবে।
অ্যারি স্ক্লিয়েরাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.