WEBrick::HTTPServer + 標準ライブラリのLogger + ローテーション

WEBrick」「Logger」「標準ライブラリ」「ローテーション/ローテート」とかのワードでググってもそれっぽいのがサッと出てこなかったのでメモ。

第 2 引数に 'daily' などの文字列を指定すると、 期間を基準にしてログをローテーションしてくれます。
(略)
サイズを基準にしたローテーションとは違って、 古いログファイルが自動で消えることはありません。 そのため、ディスクの空き容量に注意する必要があります。

Rubyist Magazine - 標準添付ライブラリ紹介 【第 2 回】 Logger
http://magazine.rubyist.net/?0008-BundledLibraries

とのことなので、ひとまずサイズごとローテーションで。

# coding: utf-8

require 'webrick'
require 'logger'

$log_server = Logger.new("./server.log", 5, 1 * 1024 * 1024)
$log_server.level = Logger::INFO

$log_access = Logger.new("./access.log", 5, 1 * 1024 * 1024)

server = WEBrick::HTTPServer.new(
  :DocumentRoot => "./",
  :Port => 5678,
  :Logger => $log_server,
  :AccessLog => [
    [$log_access, WEBrick::AccessLog::COMMON_LOG_FORMAT],
    [$log_access, WEBrick::AccessLog::REFERER_LOG_FORMAT]
  ]
)

server.start

参考


class Logger (Ruby 3.1 リファレンスマニュアル)
https://docs.ruby-lang.org/ja/latest/class/Logger.html