Help us understand the problem. What is going on with this article?

logrotate対象に、ある文字列「ではない」ファイルを指定したいのですけど、ひょっとして不可でしょうか

やりたいこと

logrotate の設定ファイルで、下記のように指定したい。

/etc/logrotate.d/nanika_no_service
/var/log/nanika_no_service/【"aiueo" から始まるログ以外】.log {
    monthly
}

/var/log/nanika_no_service/aiueo.log {
    daily
}

調べてみた結果

無理っぽい。
やむをえず、下記で妥協。

/etc/logrotate.d/nanika_no_service
/var/log/nanika_no_service/[!a]*.log {
    monthly
}

/var/log/nanika_no_service/a*.log {
    daily
}

理由

https://github.com/logrotate/logrotate/blob/master/logrotate.c
https://github.com/logrotate/logrotate/blob/master/config.c

ソースコードによると、rotate するファイルの探索にはglobを使っているようです。
でもって、globの仕様も読んでみたのですが、「単一文字以外」のワイルドカードの案内はあれど、「複数文字以外」の書き方はありませんでした。

そんなわけで、logrotate.conf のファイル指定では

/var/log/nanika_no_service/【"aiueo" から始まるログ以外】.log {
    # 略
}

上記のように書けない、というのが、今のところの結論です。
うまい方法はないものでしょうか。

経緯

同じディレクトリにあるログで、1種類のログだけ別条件で rotate したくなりました。それで調査したというわけです。
上の例だと aiueo.log が、それに当たります。

でも、ちょっと待ってください。[!] を使わず下記のように書けばいいのではないでしょうか。

/etc/logrotate.d/nanika_no_service
/var/log/nanika_no_service/*.log {
    monthly
}

/var/log/nanika_no_service/aiueo.log {
    daily
}

そうですね。僕もそう予想しました。
ですが残念なことに NG です。

logrotate 設定では、重複があると上手く動作しません。上記のようにしてしまうと、aiueo.log*.log にも含まれ、設定に重複があります。
このような条件だと、実行時にエラーになるか、aiueo.log*.log の設定に従ってしまいます (設定順によって変わりますが、どの並びがどの動作になるかは、ちょっと忘れました)。

おわりに

この投稿では、logrotate の対象ログ指定で、「複数文字以外」の表現ができないか調べました。
残念ながら、今のところ実現方法を見つけられていません。

それではごきげんよう。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした