ROTATELOGS(8) rotatelogs ROTATELOGS(8)

rotatelogs - چرخش فایل‌های گزارش وب‌سرور آپاچی

rotatelogs [ -l ] [ -L linkname ] [ -p program ] [ -f ] [ -D ] [ -t ] [ -v ] [ -e ] [ -c ] [ -n number-of-files ] logfile rotationtime|filesize(B|K|M|G) [ offset ]

برنامه rotatelogs ابزاری ساده برای استفاده به همراه قابلیت لاگ‌فایل‌های لوله‌کشی‌شده (piped logfile) وب‌سرور آپاچی است. این برنامه از چرخش گزارش‌ها بر اساس بازه زمانی یا حداکثر اندازه فایل لاگ پشتیبانی می‌کند.

باعث استفاده از زمان محلی به‌جای ساعت گرینویچ (GMT) به‌عنوان مبنای بازه زمانی یا برای قالب‌بندی strftime(3) در چرخش مبتنی بر اندازه می‌شود.

باعث ایجاد یک پیوند سخت (hard link) از فایل گزارش جاری به نام پیوند مشخص‌شده می‌شود. از این قابلیت می‌توان برای نظارت پیوسته بر لاگ در طول چرخه‌ها با دستوری مانند tail -F linkname استفاده کرد.

اگر linkname یک مسیر مطلق نباشد، نسبت به دایرکتوری کاری rotatelogs سنجیده می‌شود که هنگام اجرای rotatelogs توسط سرور، همان ServerRoot است.

در صورت تعیین، rotatelogs با هر بار باز شدن یک فایل لاگ جدید، برنامه مشخص‌شده را اجرا می‌کند. نام فایل تازه باز شده به‌عنوان آرگومان اول به برنامه ارسال می‌شود. در صورت اجرا پس از یک چرخش، فایل گزارش قبلی به‌عنوان آرگومان دوم ارسال می‌شود. rotatelogs پیش از ادامه فعالیت خود منتظر خاتمه برنامه مشخص‌شده نمی‌ماند و هیچ کد خطای بازگشتی در هنگام پایان آن را ثبت نمی‌کند. برنامه اجراشده از همان ورودی استاندارد (stdin)، خروجی استاندارد (stdout) و خطای استاندارد (stderr) مشابه خود rotatelogs استفاده می‌کند و متغیرهای محیطی را نیز به ارث می‌برد.
باعث می‌شود فایل لاگ بلافاصله پس از شروع rotatelogs باز شود، به‌جای اینکه منتظر خواندن اولین ورودی گزارش بماند (برای وب‌سایت‌های کم‌ترافیک، ممکن است تاخیر قابل‌توجهی بین زمان راه‌اندازی سرور و پردازش نخستین درخواست وجود داشته باشد، به این معنی که فایل گزارش مربوطه تا آن زمان «وجود» ندارد و این امر در برخی از ابزارهای خودکار گزارش‌گیری مشکل ایجاد می‌کند).
دایرکتوری‌های والد مسیری که فایل لاگ در آن قرار خواهد گرفت را در صورت عدم وجود ایجاد می‌کند. این ویژگی اجازه می‌دهد تا قالب‌بندی strftime(3) علاوه بر نام فایل، در مسیر نیز استفاده شود.
باعث کوتاه شدن (truncate) فایل گزارش به‌جای چرخش آن می‌شود. این گزینه زمانی مفید است که گزارش به‌صورت بلادرنگ توسط دستوری مانند tail پردازش می‌شود و نیازی به بایگانی داده‌ها نیست. هیچ پسوندی به نام فایل افزوده نخواهد شد، با این حال رشته‌های قالبی که حاوی نویسه '%' هستند رعایت می‌شوند.
باعث می‌شود که تمام فایل‌های لاگ به‌جز فایل اولیه، هنگام باز شدن کوتاه (truncate) شوند. این گزینه زمانی مفید است که رشته قالب حاوی مقداری تکرارشونده در یک چرخه باشد، مانند روز ماه. در نسخه 2.4.56 و بالاتر موجود است.
تولید خروجی پرجزئیات در STDERR. خروجی شامل نتیجه تجزیه پیکربندی و تمام عملیات باز و بسته کردن فایل‌ها است.
ارسال لاگ‌ها به stdout. هنگامی مفید است که لاگ‌ها باید به‌صورت بلادرنگ توسط ابزار دیگری در زنجیره پردازش بیشتر شوند.
ایجاد فایل گزارش برای هر بازه زمانی، حتی اگر خالی باشد.
استفاده از یک فهرست حلقوی از نام فایل‌ها بدون برچسب‌های زمانی. این گزینه فایل‌های لاگ را در زمان راه‌اندازی و هنگام چرخش بازنویسی می‌کند. با مقدار -n 3، سری فایل‌های لاگ باز شده به‌ترتیب "logfile"، "logfile.1"، "logfile.2" و سپس بازنویسی "logfile" خواهد بود. هنگامی که این برنامه برای نخستین بار "logfile" را باز می‌کند، فایل فقط در صورتی کوتاه (truncate) می‌شود که گزینه -t نیز ارائه شده باشد. هر چرخش بعدی همواره با کوتاه کردن فایل مقصد آغاز می‌شود. برای چرخش مبتنی بر اندازه بدون -t و با وجود فایل‌های لاگ قبلی، این گزینه ممکن است به رفتارهای غیرمنتظره منجر شود؛ مانند ارسال ورودی‌های اولیه گزارش به "logfile.1" و حفظ نشدن ورودی‌های "logfile.1" حتی اگر "logfile.n"های بعدی هنوز استفاده نشده باشند. در نسخه 2.4.5 و بالاتر موجود است.

مسیر به همراه نام پایه (basename) فایل لاگ. اگر logfile شامل هرگونه نویسه '%' باشد، به‌عنوان یک رشته قالب‌بندی برای strftime(3) در نظر گرفته می‌شود. در غیر این صورت، پسوند .nnnnnnnnnn به‌طور خودکار افزوده می‌شود که زمان بر حسب ثانیه است (مگر اینکه از گزینه -t استفاده شود). هر دو فرمت زمان شروع را از ابتدای دوره جاری محاسبه می‌کنند. برای نمونه، اگر زمان چرخش 86400 مشخص شود، فیلدهای ساعت، دقیقه و ثانیه ایجاد شده از قالب strftime(3) همگی صفر خواهند بود که به ابتدای دوره ۲۴ ساعته جاری (نیمه‌شب) اشاره دارند.

هنگام استفاده از قالب‌بندی نام فایل با strftime(3)، اطمینان حاصل کنید که قالب فایل لاگ دارای دقت و ریزدانگی کافی برای تولید نام فایل متفاوت در هر بار چرخش لاگ‌ها باشد. در غیر این صورت چرخش به‌جای شروع یک فایل جدید، همان فایل قبلی را بازنویسی می‌کند. برای نمونه، اگر logfile برابر با /var/log/errorlog.%Y-%m-%d با چرخش در ۵ مگابایت باشد، اما در یک روز دو بار به ۵ مگابایت برسد، همان نام فایل لاگ تولید شده و چرخش لاگ به نوشتن در همان فایل ادامه می‌دهد.

اگر فایل لاگ یک مسیر مطلق نباشد، نسبت به دایرکتوری کاری rotatelogs سنجیده می‌شود که هنگام اجرای rotatelogs توسط سرور، همان ServerRoot است.

زمان بین چرخش‌های فایل لاگ بر حسب ثانیه. چرخش در ابتدای این بازه زمانی رخ می‌دهد. برای نمونه، اگر زمان چرخش 3600 باشد، فایل لاگ در ابتدای هر ساعت چرخانده می‌شود؛ اگر زمان چرخش 86400 باشد، فایل لاگ هر شب در نیمه‌شب چرخانده می‌شود. (اگر در طول یک بازه داده‌ای ثبت نشود، فایلی ایجاد نخواهد شد.)
حداکثر اندازه فایل که دقیقاً با یکی از حروف B (بایت)، K (کیلوبایت)، M (مگابایت) یا G (گیگابایت) دنبال می‌شود.

هنگامی که هم زمان و هم اندازه مشخص شده باشند، اندازه باید پس از زمان آورده شود. چرخش به محض رسیدن به هر یک از محدودیت‌های زمانی یا اندازه‌ای رخ خواهد داد.

تعداد دقایق اختلاف زمانی نسبت به UTC. در صورت حذف، صفر فرض شده و از UTC استفاده می‌شود. برای نمونه، برای استفاده از زمان محلی در منطقه زمانی UTC -5 ساعت، مقدار -300 را برای این آرگومان مشخص کنید. در بیشتر موارد، باید به‌جای تعیین اختلاف زمان، از گزینه -l استفاده شود.

CustomLog "|bin/rotatelogs /var/log/logfile 86400" common

این پیکربندی فایل‌های /var/log/logfile.nnnn را ایجاد می‌کند که در آن nnnn زمان سیستم در لحظه شروع اسمی لاگ است (این زمان همیشه مضربی از زمان چرخش خواهد بود، بنابراین می‌توانید اسکریپت‌های cron را با آن همگام‌سازی کنید). در پایان هر زمان چرخش (در اینجا پس از ۲۴ ساعت) یک لاگ جدید آغاز می‌شود.

CustomLog "|bin/rotatelogs -l /var/log/logfile.%Y.%m.%d 86400" common

این پیکربندی فایل‌های /var/log/logfile.yyyy.mm.dd را ایجاد می‌کند که در آن yyyy سال، mm ماه و dd روز ماه است. ثبت لاگ هر روز در نیمه‌شب به وقت محلی به یک فایل جدید تغییر می‌کند.

CustomLog "|bin/rotatelogs /var/log/logfile 5M" common

این پیکربندی فایل لاگ را هر زمان که اندازه آن به ۵ مگابایت برسد می‌چرخاند.

ErrorLog "|bin/rotatelogs /var/log/errorlog.%Y-%m-%d-%H_%M_%S 5M"

این پیکربندی فایل لاگ خطا را هر زمان که اندازه آن به ۵ مگابایت برسد می‌چرخاند و پسوند نام لاگ‌فایل به صورت errorlog.YYYY-mm-dd-HH_MM_SS ایجاد خواهد شد.

CustomLog "|bin/rotatelogs -t /var/log/logfile 86400" common

این پیکربندی فایل /var/log/logfile را ایجاد می‌کند که در زمان راه‌اندازی کوتاه (truncate) شده و سپس روزی یک بار کوتاه می‌شود. در این سناریو انتظار می‌رود که یک فرآیند جداگانه (مانند tail) فایل را به‌صورت بلادرنگ پردازش کند.

CustomLog "|bin/rotatelogs -T /var/log/logfile.%d 86400" common

اگر سرور در روز اول ماه راه‌اندازی (یا مجدداً راه‌اندازی) شود، این دستور داده‌ها را به انتهای /var/log/logfile.01 اضافه می‌کند. هنگامی که یک ورودی لاگ در روز دوم ماه نوشته می‌شود، /var/log/logfile.02 کوتاه شده و ورودی‌های جدید به ابتدای آن افزوده می‌شوند. این مثال لاگ‌های حدود ۱ ماه را بدون نیاز به نگهداری خارجی حفظ می‌کند.

جایگزینی‌های رشته قالب لاگ‌فایل زیر باید توسط تمام پیاده‌سازی‌های strftime(3) پشتیبانی شوند؛ برای افزونه‌های مختص هر کتابخانه، صفحه راهنمای strftime(3) را ببینید.

• %A - نام کامل روز هفته (محلی‌شده)
• %a - نام سه‌حرفی روز هفته (محلی‌شده)
• %B - نام کامل ماه (محلی‌شده)
• %b - نام سه‌حرفی ماه (محلی‌شده)
• %c - تاریخ و زمان (محلی‌شده)
• %d - روز ماه به‌صورت دورقمی
• %H - ساعت به‌صورت دورقمی (ساعت ۲۴ ساعته)
• %I - ساعت به‌صورت دورقمی (ساعت ۱۲ ساعته)
• %j - روز سال به‌صورت سه‌رقمی
• %M - دقیقه به‌صورت دورقمی
• %m - ماه به‌صورت دورقمی
• %p - قبل‌ازظهر/بعدازظهر (am/pm) در ساعت ۱۲ ساعته (محلی‌شده)
• %S - ثانیه به‌صورت دورقمی
• %U - شماره هفته سال به‌صورت دورقمی (یکشنبه اولین روز هفته)
• %W - شماره هفته سال به‌صورت دورقمی (دوشنبه اولین روز هفته)
• %w - روز هفته به‌صورت یک‌رقمی (یکشنبه اولین روز هفته)
• %X - زمان (محلی‌شده)
• %x - تاریخ (محلی‌شده)
• %Y - سال به‌صورت چهاررقمی
• %y - سال به‌صورت دورقمی
• %Z - نام منطقه زمانی
• %% - نویسه لفظی `%'
2026-04-30 Apache HTTP Server