From 95f9d7c9a8244295de71ca3ec2bbe012d8c0a683 Mon Sep 17 00:00:00 2001 From: y-takahashi Date: Thu, 13 Aug 2015 14:55:02 +0900 Subject: [PATCH] Add recursive mkdir to create_logfile. --- lib/chrono_logger.rb | 2 ++ test/test_chrono_logger.rb | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/lib/chrono_logger.rb b/lib/chrono_logger.rb index 7540804..3033d16 100644 --- a/lib/chrono_logger.rb +++ b/lib/chrono_logger.rb @@ -1,5 +1,6 @@ require "chrono_logger/version" require 'logger' +require 'pathname' # A lock-free logger with timebased file rotation. class ChronoLogger < Logger @@ -91,6 +92,7 @@ def open_logfile(filename) def create_logfile(filename) begin + Pathname(filename).dirname.mkpath logdev = open(filename, (File::WRONLY | File::APPEND | File::CREAT | File::EXCL)) logdev.sync = true rescue Errno::EEXIST diff --git a/test/test_chrono_logger.rb b/test/test_chrono_logger.rb index 1f8c289..f39b40a 100644 --- a/test/test_chrono_logger.rb +++ b/test/test_chrono_logger.rb @@ -46,6 +46,23 @@ def test_rotation_per_second end end + def test_rotation_per_day_and_create_dir + Dir.mktmpdir do |tmpdir| + begin + Delorean.time_travel_to '2015-08-01 23:59:50' + logger = ChronoLogger.new([tmpdir, '/%Y/%m/%d/test.log'].join) + logger.debug 'rotation' + Delorean.time_travel_to '2015-08-02 00:00:01' + logger.debug 'new dir' + + assert { File.exist?([tmpdir, '/2015/08/01/test.log'].join) } + assert { File.exist?([tmpdir, '/2015/08/02/test.log'].join) } + ensure + Delorean.back_to_the_present + end + end + end + class PeriodTest include ChronoLogger::Period end