[ruby/logger] Extract `Logger::LogDevice#handle_write_errors`
authorNobuyoshi Nakada <[email protected]>
Wed, 9 Oct 2024 03:54:16 +0000 (9 12:54 +0900)
committergit <[email protected]>
Wed, 4 Dec 2024 07:45:37 +0000 (4 07:45 +0000)
https://github.com/ruby/logger/commit/f904ad2f7c

lib/logger/log_device.rb

index 4876adf..a5c3759 100644 (file)
@@ -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)