0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

newsyslogを使用してログのローテションを行う

Posted at

macOSでターミナルログをnewsyslogでローテーションする

私は普段ターミナルをのログを残ようにしている。
しかし、このログが溜まってきたので対処しよとう思う。

現状のサイズを確認する

% du -sh Desktop/logsave
 16G	Desktop/logsave

ログファイルだけで16GBもつかってるのか…
ということで、ログローテションを導入することにした。

macOSではlogrotateではなくnewsyslogを使う

最初はLinuxのように、/etc/logrotate.d/に設定を置けばいいだろうと思っていましたが、
macOSではlogrotateではなく、newsyslogを使用する模様。
しかもフォーマットも異なると…

設定ファイルを作成する

ということで、newsyslogは以下の設定とすることとした。

# logfilename                    [owner:group]    mode count size  when  flags [/pid_file] [sig_num]
/Users/kaz/Desktop/logsave/*.log root:wheel       644  12     *    $M1D0   ZG

newsyslogのフォーマットやコマンド操作については、以下のサイトを参考にした。
https://wiki.rookie-inc.com/os/freebsd/tips/newsyslog
https://nxmnpg.lemoda.net/ja/8/newsyslog#4

設定の確認をする

 % sudo newsyslog -nv
/Users/kaz/Desktop/logsave/20221010_181814.Default.w1t0p0.B127F008-5E95-492E-AA8E-332D2E6BF9C5.868.233518850.log <12Z>: --> will trim at Sat Nov  1 00:00:00 2025
/Users/kaz/Desktop/logsave/20221015_224727.Default.w0t0p0.B823F428-2C6A-452E-86C8-7F5FC9CEFAB8.4007.3282214398.log <12Z>: --> will trim at Sat Nov  1 00:00:00 2025
/Users/kaz/Desktop/logsave/20221016_135721.Default.w0t0p0.B9F5CDFA-7B8D-4B72-B6D3-3A3DF8A8885B.4007.3956408280.log <12Z>: --> will trim at Sat Nov  1 00:00:00 2025
/Users/kaz/Desktop/logsave/20221206_232829.Default.w0t0p0.BB00B7A8-2E64-4635-9094-A5A5DCAE1190.872.2928957415.log <12Z>: --> will trim at Sat Nov  1 00:00:00 2025
/Users/kaz/Desktop/logsave/20221230_200534.Default.w0t0p0.57661392-14B8-4D89-BEFC-617DD7C7D857.2591.2829962603.log <12Z>: --> will trim at Sat Nov  1 00:00:00 2025
/Users/kaz/Desktop/logsave/20221230_200747.Default.w0t0p0.BD57BA52-C0EC-423F-972C-89A29903EAAC.2591.1173385807.log <12Z>: --> will trim at Sat Nov  1 00:00:00 2025
/Users/kaz/Desktop/logsave/20230103_162248.Default.w0t0p0.4A75F957-B7AD-45F1-83E3-7A0E6FE3AC85.22360.2123850268.log <12Z>: --> will trim at Sat Nov  1 00:00:00 2025
/Users/kaz/Desktop/logsave/20230122_135538.Default.w0t0p0.591D8FE0-A4EE-4423-A27C-3ED5D7A8610A.2613.3745792326.log <12Z>: --> will trim at Sat Nov  1 00:00:00 2025
/Users/kaz/Desktop/logsave/20230207_221505.Default.w0t0p0.E8408879-46DD-406E-8A00-E2363B6C290D.13268.2897994216.log <12Z>: --> will trim at Sat Nov  1 00:00:00 2025
〜〜

Sat Nov 1 00:00:00 2025と11/1 0時にローテートされることが確認できた。

手動実行する

毎月1日0時に動くことは分かったので、16GBも使用してるので今回は手動実行でローテーションしていこうと思う。

・dry-run
% sudo newsyslog -nv -f /etc/newsyslog.d/terminallog.conf

・実行
% sudo newsyslog -v -F -f /etc/newsyslog.d/terminallog.conf
〜〜
Signal all daemon process(es)...
Notified daemon pid 613 = /var/run/syslog.pid
Pause 10 seconds to allow daemon(s) to close log file(s)
Compress all rotated log file(s)...

 % du -sh Desktop/logsave
5.9G	Desktop/logsave

5.9GBまで減らすことができた。

newsyslog は元ファイルを削除しない

手動でローテーションを実行した結果、以下のように.0.gzファイルが生成された。

-rw-r--r--@ 1 root  wheel         91 Oct 19 04:42 _20250820220423.log
-rw-r--r--@ 1 root  wheel        249 Oct 19 04:42 _20250825105433.log.0.gz
-rw-r--r--@ 1 root  wheel         91 Oct 19 04:42 _20250825105433.log
-rw-r--r--@ 1 root  wheel        163 Oct 19 04:42 _20250825193713.log.0.gz
-rw-r--r--@ 1 root  wheel         91 Oct 19 04:42 _20250825193713.log
-rw-r--r--@ 1 root  wheel        247 Oct 19 04:42 _20251003132104.log.0.gz
-rw-r--r--@ 1 root  wheel         91 Oct 19 04:42 _20251003132104.log

newsyslogの場合、ローテーション後も同名の空ログファイルが再作成される仕様になっている模様(GPT調べ)
homebrewでlogrotateをインストールして使用できるっぽいので、これからやる際はこっちが良さそう…
https://formulae.brew.sh/formula/logrotate

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?