From ed47b6b32445107e870d8b1e9825141802fb8fdd Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 9 Oct 2024 12:54:16 +0900 Subject: [PATCH] [ruby/logger] Extract `Logger::LogDevice#handle_write_errors` https://github.com/ruby/logger/commit/f904ad2f7c --- lib/logger/log_device.rb | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/lib/logger/log_device.rb b/lib/logger/log_device.rb index 4876adf0b7..a5c3759e80 100644 --- a/lib/logger/log_device.rb +++ b/lib/logger/log_device.rb @@ -30,29 +30,13 @@ class Logger end def write(message) - begin + handle_write_errors("writing") do synchronize do if @shift_age and @dev.respond_to?(:stat) - begin - check_shift_log - rescue *@reraise_write_errors - raise - rescue - warn("log shifting failed. #{$!}") - end - end - begin - @dev.write(message) - rescue *@reraise_write_errors - raise - rescue - warn("log writing failed. #{$!}") + handle_write_errors("shifting") {check_shift_log} end + handle_write_errors("writing") {@dev.write(message)} end - rescue *@reraise_write_errors - raise - rescue Exception => ignored - warn("log writing failed. #{ignored}") end end @@ -121,6 +105,13 @@ class Logger logdev.sync = true end logdev + + def handle_write_errors(mesg) + yield + rescue *@reraise_write_errors + raise + rescue + warn("log #{mesg} failed. #{$!}") end def add_log_header(file)