web-dev-qa-db-ja.com

logrotate dateformatは%H:%M:%Sをサポートしていないようです

Logrotateの方が新しいです。 configureがプロパティ "dateformat"になると、logrotateはstrftime "%H"をサポートしていないようです。ここに設定があります:

{
    daily
    rotate  2
    size 3M
    missingok
    notifempty
    dateext
    dateformat -%Y%m%d_%H:%M:%S
    ...
}

ローテーションされたファイル形式は次のようになる傾向があります:uwsgi_dev.log-20150630_%H:%M:%Sが、正確な「時分と秒」が欲しい.

ありがとう

13
gwecho huang

%Hのサポートはバージョン .9. で追加されました。以前のバージョンでは、logrotateはstrftime "%H:

dateformat format_string:strftime(3)関数と同様の表記法を使用して、dateextの拡張子を指定します。 %Y%m%dおよび%s指定子のみが許可されています。

Logrotateのmanページから http://linux.die.net/man/8/logrotate

ただし、dateformat文字列では_%s_を使用できます。これは1970-01-01からの秒数です。 _dateformat -%Y%m%d-%s_を設定できます。これにより、ログがローテーションされるたびに一意のファイル名が生成されるため、ファイルを1日に複数回ローテーションできます。残念ながら、_%s_の部分は読みづらくなりますが、Perl -e "print scalar(localtime(1451214849))"を使用して簡単に読み取り可能な日付に戻すことができます。

一部のシステムでは、dateプログラムを使用すると、_date -d @1451214849_(例GNU date)を使用してこのような変換を簡単に実行できます。ほとんどのシステム(例: Solaris date)の場合、_date -d "1970-01-01 + 1451214849 sec"_のような構文で運がよいかもしれません。Busyboxdateは_@_トリックのみをサポートし、2番目の例の複雑な式はサポートしないことに注意してください。

10