Class: Soba::Services::SessionLogger
- Inherits:
-
Object
- Object
- Soba::Services::SessionLogger
- Defined in:
- lib/soba/services/session_logger.rb
Overview
セッション出力のログ管理サービス
Constant Summary collapse
- DEFAULT_LOG_DIR =
File.join(Dir.home, ".soba", "logs")
- DEFAULT_MAX_SIZE =
10MB
10 * 1024 * 1024
Instance Attribute Summary collapse
-
#log_dir ⇒ Object
readonly
Returns the value of attribute log_dir.
Instance Method Summary collapse
-
#cleanup_old_logs(days: 30) ⇒ Object
古いログファイルのクリーンアップ.
-
#close ⇒ Object
ファイルハンドルをクローズ.
-
#find_log(session_name) ⇒ Object
セッションのログファイルパスを取得.
-
#initialize(log_dir: nil, max_size: DEFAULT_MAX_SIZE) ⇒ SessionLogger
constructor
A new instance of SessionLogger.
-
#list_sessions ⇒ Object
ログが存在するセッション一覧.
-
#write(session_name, content) ⇒ Object
ログファイルに書き込み.
Constructor Details
#initialize(log_dir: nil, max_size: DEFAULT_MAX_SIZE) ⇒ SessionLogger
Returns a new instance of SessionLogger.
15 16 17 18 19 20 21 |
# File 'lib/soba/services/session_logger.rb', line 15 def initialize(log_dir: nil, max_size: DEFAULT_MAX_SIZE) @log_dir = log_dir || DEFAULT_LOG_DIR @max_size = max_size @file_handles = {} ensure_log_directory end |
Instance Attribute Details
#log_dir ⇒ Object (readonly)
Returns the value of attribute log_dir.
13 14 15 |
# File 'lib/soba/services/session_logger.rb', line 13 def log_dir @log_dir end |
Instance Method Details
#cleanup_old_logs(days: 30) ⇒ Object
古いログファイルのクリーンアップ
56 57 58 59 60 61 62 63 64 |
# File 'lib/soba/services/session_logger.rb', line 56 def cleanup_old_logs(days: 30) cutoff_time = Time.now - (days * 24 * 60 * 60) Dir.glob(File.join(@log_dir, "soba-*.log*")).each do |file| if File.mtime(file) < cutoff_time File.delete(file) end end end |
#close ⇒ Object
ファイルハンドルをクローズ
50 51 52 53 |
# File 'lib/soba/services/session_logger.rb', line 50 def close @file_handles.each_value(&:close) @file_handles.clear end |
#find_log(session_name) ⇒ Object
セッションのログファイルパスを取得
36 37 38 39 |
# File 'lib/soba/services/session_logger.rb', line 36 def find_log(session_name) log_file = File.join(@log_dir, "#{session_name}.log") File.exist?(log_file) ? log_file : nil end |
#list_sessions ⇒ Object
ログが存在するセッション一覧
42 43 44 45 46 47 |
# File 'lib/soba/services/session_logger.rb', line 42 def list_sessions Dir.glob(File.join(@log_dir, "soba-*.log")). reject { |f| f.include?(".log.") }. # ローテートファイルを除外 map { |f| File.basename(f, ".log") }. sort end |
#write(session_name, content) ⇒ Object
ログファイルに書き込み
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/soba/services/session_logger.rb', line 24 def write(session_name, content) ensure_file_handle(session_name) = Time.now.strftime("[%Y-%m-%d %H:%M:%S]") @file_handles[session_name].write("#{} #{content}") @file_handles[session_name].flush # ローテーションチェック check_rotation(session_name) end |