現在の日付に基づいて、毎日Apacheに新しいエラーログファイルを作成させようとしています。デフォルトのエラー ログ ファイル名は、ErrorLog "/logs/error.log" のようなものです。
次のようなものにしたい: ErrorLog "/logs/error_$year$month$day.log"
何か案は?
現在の日付に基づいて、毎日Apacheに新しいエラーログファイルを作成させようとしています。デフォルトのエラー ログ ファイル名は、ErrorLog "/logs/error.log" のようなものです。
次のようなものにしたい: ErrorLog "/logs/error_$year$month$day.log"
何か案は?
クロノログを見てみよう
cronolog は、標準入力からログ ファイル エントリを読み取り、ファイル名テンプレートと現在の日付と時刻で指定された出力ファイルに各エントリを書き込む単純なフィルター プログラムです。展開されたファイル名が変更されると、現在のファイルが閉じられ、新しいファイルが開かれます。cronolog は、アクセス ログを日次または月次のログに分割するために、Apache などの Web サーバーと組み合わせて使用することを目的としています。
私のアプローチは、Apacheのログを1日に1回ローテーションするようにApacheのlogrotateを構成することです..
代わりに、すべてのログ行に日付情報を持つカスタム ログの場合:
%...{format}t: The time, in the form given by format, which should
be in strftime(3) format. (potentially localized)
strftime (man 3 strftime) フォーマット規則を使用する必要があります。
%F or its equivalent without dashes %Y%m%d
そう:
# CustomLog with explicit format string
CustomLog my_log "%{%Y%m%d}t %h %l %u %t \"%r\" %>s %b"
%{%Y%m%d}tが仕事をする場所
httpd.conf でこれに変更します
ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"
この構成では、サイズが 5 メガバイトに達するたびにエラー ログ ファイルがローテーションされ、ログ ファイル名のサフィックスが errorlog.YYYY-mm-dd-HH_MM_SS の形式で作成されます。