macOSにlogrotateコマンドを導入する。

[主題]
macOSでHomebrewを使わずに、logrotateコマンドをインストール&運用する手順を説明したい。

[背景]
筆者が参考にしたFail2banのログローテーションには、logrotateコマンドが用いられていた。macOSのログローテーションに書き換えるのも、考え方としてはありだが、面倒くさいので、logrotateコマンドを導入することにした。
これは、その際の手順をまとめた作業記録である。

[環境]
参考までに、筆者の環境を記載しておく
MacBook Pro 2018 15.4inch(インテルMac)
macOS 13.4 Ventura
Xcode 14.3
CommandLine Tools for Xcode 14.3.0.0.1

MacBook Pro 2016 13inch(インテルMac)
mmacOS 12.6.6 Monterey
CommandLine Tools for Xcode 14.2.0.0.1

[インストール手順]

  1. poptのインストール
    logrotateは、poptに依存しているので、poptをインストールする。

    curl -LO https://ftp.osuosl.org/pub/rpm/popt/releases/popt-1.x/popt-1.19.tar.gz
    tar xf popt-1.19.tar.gz
    cd popt-1.19
    ./configure
    make && sudo make install
  2. logrotateのインストール

    curl -LO https://github.com/logrotate/logrotate/releases/download/3.21.0/logrotate-3.21.0.tar.xz
    tar xf logrotate-3.21.0.tar.xz
    cd logrotate-3.21.0
    ./configure \
    --with-compress-command=/usr/bin/gzip \
    --with-uncompress-command=/usr/bin/gunzip \
    --with-state-file-path=/var/lib/logrotate.status
    make && sudo make install

[運用]

  1. logrotateの設定ファイル準備

    cd logrotate-3.21.0/examples
    sudo cp -p logrotate.conf /usr/local/etc/

    筆者の場合、以下の修正を加えた。

    sudo vim /usr/local/etc/logrotate.conf
    --- logrotate-3.21.0/examples/logrotate.conf	2021-04-17 01:32:39.000000000 +0900
    +++ /usr/local/etc/logrotate.conf	2023-05-28 01:21:52.000000000 +0900
    @@ -12,7 +12,7 @@
     create
    
     # use date as a suffix of the rotated file
    -dateext
    +#dateext
    
     # uncomment this if you want your log files compressed
     #compress
  2. ローテーションするログの設定ファイルを置くディレクトリの準備

    sudo mkdir -p /etc/logrotate.d
  3. logrotateの自動起動設定

    cd /Library/LaunchDaemons
    sudo vim jp.yourName.logrotate.plist

    記述する内容

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>Label</key>
      <string>jp.yourName.logrotate</string>
      <key>ProgramArguments</key>
      <array>
        <string>/usr/local/sbin/logrotate</string>
        <string>/usr/local/etc/logrotate.conf</string>
      </array>
      <key>Disabled</key>
      <false/>
      <key>RunAtLoad</key>
      <false/>
      <key>StartCalendarInterval</key>
      <dict>
        <key>Minute</key>
        <integer>0</integer>
      </dict>
    </dict>
    </plist>
  4. logrotateの起動。
    ただし、本稿ではローテーション対象ログファイルの設定をしていないので、何も起こらない。ローテーションの実施例は、別の投稿に書く。

    sudo /usr/local/sbin/logrotate -f /usr/local/etc/logrotate.conf
    cd /Library/LaunchDaemons/
    sudo launchctl load -w jp.yourName.logrotate.plist

参考サイト

以上。

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL