From b36ca571a1ea257038dfdc85d6890e6bdceafabf Mon Sep 17 00:00:00 2001 From: kaedeek Date: Sat, 14 Feb 2026 23:08:24 +0900 Subject: [PATCH 1/2] feat(Update): add progress logging. --- lib/versalog.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lib/versalog.rb b/lib/versalog.rb index dfac462..9e32dca 100644 --- a/lib/versalog.rb +++ b/lib/versalog.rb @@ -280,5 +280,29 @@ def debug(msg, tag = nil) def critical(msg, tag = nil) _Log(msg, "CRITICAL", tag) end + + def step(title, step, total, tag = nil) + msg = "[STEP #{step}/#{total}] #{title}" + _Log(msg, "INFO", tag) + end + + def progress(title, current, total, tag = nil) + percent = total.to_i > 0 ? ((current.to_f / total.to_f) * 100).to_i : 0 + msg = "#{title} : #{percent}% (#{current}/#{total})" + _Log(msg, "INFO", tag) + end + + def timer(title, tag = nil) + start_time = Time.now + _Log("#{title} : start", "INFO", tag) + + begin + yield if block_given? + ensure + elapsed = Time.now - start_time + _Log("#{title} : done (#{format('%.2f', elapsed)}s)", "INFO", tag) + end + end + end end \ No newline at end of file From 24611b4c10cf44246248ed63b16b7343c21485e9 Mon Sep 17 00:00:00 2001 From: kaedeek Date: Sat, 14 Feb 2026 23:10:41 +0900 Subject: [PATCH 2/2] feat(examples): add examples --- examples/progress_logging.rb | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 examples/progress_logging.rb diff --git a/examples/progress_logging.rb b/examples/progress_logging.rb new file mode 100644 index 0000000..80bdd21 --- /dev/null +++ b/examples/progress_logging.rb @@ -0,0 +1,37 @@ +require "versalog" + +log = Versalog::VersaLog.new( + enum: "detailed", + tag: "BATCH", + show_file: false, + show_tag: true, + enable_all: false, + notice: false, + all_save: true, + save_levels: ["INFO", "ERROR"], + silent: false +) + +total_files = 3 + +log.info("Batch Start") + +log.timer("Total Batch") do + (1..total_files).each do |file_index| + + log.step("Processing file_#{file_index}.txt", file_index, total_files) + + log.timer("file_#{file_index}.txt") do + total_lines = 10 + + (1..total_lines).each do |i| + sleep 0.1 + log.progress("file_#{file_index}.txt", i, total_lines) + end + end + + log.progress("Overall Progress", file_index, total_files) + end +end + +log.info("Batch Finished")