سؤال تكوين ملف تكوين logrotate - متعددة إدخالات بدل ممكن؟


بما أن صفحة الرجل لا ترد على سؤالي ولا أريد أن أجري دورة التناوب ، فقد قررت طرح السؤال هنا.

الصفحة man ل logrotate يعطي المثال التالي:

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail www@my.org
       size 100k
       sharedscripts
       postrotate
           /usr/bin/killall -HUP httpd
       endscript
   }

تحتوي جميع الأمثلة التي تحتوي على أحرف بدل على إدخال واحد فقط. الآن ، ما يهمني هو ما إذا كان هذا الشخص مسموحًا به أيضًا:

   /var/log/httpd/*.log /var/log/httpd/*/*.log {
       # ... same as above
   }

هنا هو المنطق: لدي العديد من vhosts وأنا تقسيمها من قبل المستخدم الذي "يمتلك" تلك vhosts. بما أن ملفات السجل قابلة للقراءة في العالم ، أريد ربط مجلد في دليل المستخدم الرئيسي ، ولكن حدده في ملفات السجل التي "يمتلكها المستخدم" ، والتي يسهل تحقيقها من خلال فصل السجلات إلى مجلدات (والربط -mounting يتطلب ذلك المخطط على أي حال). لذلك أنا أبحث عن حل لتدوير كل من ملفات السجل تحت /var/log/httpd وكذلك جميع ملفات السجل تحت الدلائل الفرعية لهذا الدليل - بدون الاضطرار إلى سرد كل دليل فرعي بالاسم.

بشكل عام ، لا تقدم صفحة man أي فكرة عما إذا كانت الإدخالات المتعددة ممكنة على الإطلاق لقواعد أحرف البدل أو فقط للمسارات الكاملة. أنا باستخدام الإصدار logrotate 3.7.8-6 الذي يأتي مع Debian "Squeeze" ، لكني أعتقد أن هذا ليس بالضرورة محددًا لنسخة توزيعة أو برنامج.


73
2018-03-10 21:09


الأصل




الأجوبة:


نعم ، يمكنك استخدام العديد من البطاقات البرية. يمكنك اختبار ملفك دون إجراء التناوب الفعلي عن طريق القيام بذلك:

logrotate -d -f /etc/logrotate.conf
  • -d = يقوم بتشغيل وضع التصحيح. في وضع التصحيح ، سيتم إجراء أية تغييرات على السجلات أو إلى ملف حالة logrotate.

  • -f = يقول logrotate لفرض الدوران ، حتى لو لم يكن يعتقد ذلك           هذا مهم. في بعض الأحيان هذا مفيد بعد إضافة جديدة           إدخالات إلى logrotate أو إذا تمت إزالة ملفات السجل القديمة بواسطة           ، ﺣﻴﺚ ﺳﻴﺘﻢ إﻧﺸﺎء اﻟﻤﻠﻔﺎت اﻟﺠﺪﻳﺪة وﺳﻴﺆدي اﻟﺘﺴﺠﻴﻞ إﻟﻰ           tinue correct.`


106
2018-03-10 22:08



شكرا جزيلا! فقط حاول ويعمل. يبدو من الناتج أنه من المتوقع أن تعمل أحرف البدل كما هي في shell. - 0xC0000022L


أردت فقط أن أوضح ، لأن هذا هو ما حصلت عليه هنا أبحث كيف أفعل ،

يُسمح بتحديد ملفات السجل المتعددة لتكوين واحد ، على سبيل المثال

/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
    rotate 5
    mail nobody@example.org
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}

15
2018-01-18 20:21



// ، أليس هناك مشكلة في المسارات المختلفة التي تحدث على خطوط متعددة؟ - Nathan Basanese
NathanBasanese أنا لا أفهم سؤالك بالكامل ، وأعتقد أنه يمكنك توجيه خطوط المسار في الملفات في أي مكان على القرص الذي يعجبك ، لا ينبغي أن يكونوا جميعهم في نفس بادئة الدليل. - ThorSummoner


من صفحة رجل ل logrotate:

لاحظ أن أسماء ملفات السجل قد تكون محاطة بعلامات اقتباس (وهذا   علامات الاقتباس مطلوبة إذا كان الاسم يحتوي على مسافات). قذيفة عادية   تنطبق قواعد الاقتباس ، مع "،" ، و \ الشخصيات المدعومة.

يُرجى تذكر تعديل علامات اقتباس أو إزالتها عند الانتقال من أنماط فردية إلى أنماط متعددة:

هذا يعمل:

/var/log/*.log /var/log/*.blog {

هذا يعمل أيضا:

/var/log/*.log
/var/log/*.blog {

هذا لا يعمل:

'/var/log/*.log /var/log/*.blog' {

ولا هذا:

"/var/log/*.log /var/log/*.blog" {

مقارنة مع حالة نمط واحد.

هذا يعمل:

'/var/log/*.log' {

وهذا يعمل أيضا:

"/var/log/*.log" {

اختبار مع logrotate 3.10.0


2
2018-03-20 09:21



سيكون من المثير للاهتمام معرفة ما إذا كان هذا يعمل: "/var/space /log/*.log" "/var/log/*.blog" - KajMagnus