diff --git a/lib/logger/log_device.rb b/lib/logger/log_device.rb index e16f3b7..ea741ab 100644 --- a/lib/logger/log_device.rb +++ b/lib/logger/log_device.rb @@ -130,6 +130,8 @@ def open_logfile(filename) end def create_logfile(filename) + logdev = nil + success = false begin logdev = File.open(filename, MODE_TO_CREATE) logdev.flock(File::LOCK_EX) @@ -138,10 +140,13 @@ def create_logfile(filename) logdev.binmode if @binmode add_log_header(logdev) unless @skip_header logdev.flock(File::LOCK_UN) + success = true logdev rescue Errno::EEXIST # file is created by another process open_logfile(filename) + ensure + logdev.close if logdev and !success end end