log_bench 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f47f54da37cac6796e02b70422d8fc1ccede25a68cb9397474c366b7495f334
4
- data.tar.gz: 95716c0f2be707a223760b7bfcf54a92ccb67a9854d067b575c393b44f8d2a25
3
+ metadata.gz: cf603f1b73dcf743535f1732e8e1d8faa88a79eb3c54d549afd07faae49a5592
4
+ data.tar.gz: 84dc80f53389ac160f3d03153a23a214fd737dc1df7600b1c57c52506d06d142
5
5
  SHA512:
6
- metadata.gz: 82ba350746d3738578a7b024bddbe335192fd93e3e190f7131a2017cdde95a300bf2866c9f856f0cbba378e7b56158303f0cb08badb1480c3a73af5718a4f347
7
- data.tar.gz: 4c99eec64d36aa6728e41b7d19ce3a11542ba81018507072c18cf5ea10b090467f7c774e805adbcd14da8a20e2f6c4cf6cf744f7b10e9f9aa55b6727d228443c
6
+ metadata.gz: f15102b09c8c19776338a9a40fd88482893f488d645be42c2c43192549f3786bf3268e86a2bd52d81c3159af2f6abd6334a09d62409fbc7cfd6d51fd439f8ce9
7
+ data.tar.gz: aa1bb3b7decbbf3f18abbd75759b40a9857582b9e9d99037dce82eb56c17a77f652c42ec799ce822a149ac40a7efd96bea1f5da68eedb6366ae383008914a39f
data/exe/log_bench CHANGED
@@ -66,7 +66,7 @@ rescue Interrupt
66
66
  exit 0
67
67
  rescue => e
68
68
  Curses.close_screen if defined?(Curses)
69
- puts "❌ Error: #{e.message}"
69
+ puts "❌ Error: #{e.message} \n#{e.backtrace.join("\n")}"
70
70
  puts
71
71
  puts "Common issues:"
72
72
  puts " - Log file doesn't exist or is empty"
@@ -38,6 +38,8 @@ module LogBench
38
38
 
39
39
  private
40
40
 
41
+ attr_accessor :log_file_path, :state, :screen, :monitor, :input_handler, :renderer
42
+
41
43
  def find_log_file(path)
42
44
  candidates = [path] + DEFAULT_LOG_PATHS
43
45
  candidates.find { |candidate| File.exist?(candidate) } || path
@@ -51,6 +53,10 @@ module LogBench
51
53
  end
52
54
  end
53
55
 
56
+ def log_file_name
57
+ File.basename(log_file_path)
58
+ end
59
+
54
60
  def validate_configuration!
55
61
  ConfigurationValidator.validate_rails_config!
56
62
  rescue ConfigurationValidator::ConfigurationError => e
@@ -64,7 +70,7 @@ module LogBench
64
70
  end
65
71
 
66
72
  def setup_components
67
- self.renderer = Renderer::Main.new(screen, state)
73
+ self.renderer = Renderer::Main.new(screen, state, log_file_name)
68
74
  self.input_handler = InputHandler.new(state, screen, renderer)
69
75
  end
70
76
 
@@ -101,10 +107,6 @@ module LogBench
101
107
  monitor&.stop
102
108
  screen&.cleanup
103
109
  end
104
-
105
- private
106
-
107
- attr_accessor :log_file_path, :state, :screen, :monitor, :input_handler, :renderer
108
110
  end
109
111
  end
110
112
  end
@@ -7,21 +7,21 @@ module LogBench
7
7
  include Curses
8
8
 
9
9
  # Application info
10
- APP_NAME = "LogBench #{LogBench::VERSION}"
10
+ APP_NAME = "LogBench"
11
11
  APP_SUBTITLE = "Rails Log Viewer"
12
- DEFAULT_LOG_FILENAME = "development.log"
12
+ VERSION = "(v#{LogBench::VERSION})"
13
13
 
14
14
  # Layout constants
15
15
  TITLE_X_OFFSET = 2
16
- FILENAME_X_OFFSET = 15
17
16
 
18
17
  # Color constants
19
18
  HEADER_CYAN = 1
20
19
  SUCCESS_GREEN = 3
21
20
 
22
- def initialize(screen, state)
21
+ def initialize(screen, state, log_file_name)
23
22
  self.screen = screen
24
23
  self.state = state
24
+ self.log_file_name = log_file_name
25
25
  end
26
26
 
27
27
  def draw
@@ -36,17 +36,17 @@ module LogBench
36
36
 
37
37
  private
38
38
 
39
- attr_accessor :screen, :state
39
+ attr_accessor :screen, :state, :log_file_name
40
40
 
41
41
  def draw_title
42
42
  header_win.setpos(1, TITLE_X_OFFSET)
43
43
  header_win.attron(color_pair(HEADER_CYAN) | A_BOLD) { header_win.addstr(APP_NAME) }
44
- header_win.addstr(" - #{APP_SUBTITLE}")
44
+ header_win.addstr(" - #{APP_SUBTITLE} #{VERSION}")
45
45
  end
46
46
 
47
47
  def draw_file_name
48
- header_win.setpos(1, screen.width / 2 - FILENAME_X_OFFSET)
49
- header_win.attron(color_pair(SUCCESS_GREEN)) { header_win.addstr(DEFAULT_LOG_FILENAME) }
48
+ header_win.setpos(1, (screen.width / 2) - (log_file_name.length / 2))
49
+ header_win.attron(color_pair(SUCCESS_GREEN)) { header_win.addstr(log_file_name) }
50
50
  end
51
51
 
52
52
  def draw_stats
@@ -4,12 +4,12 @@ module LogBench
4
4
  module App
5
5
  module Renderer
6
6
  class Main
7
- def initialize(screen, state)
7
+ def initialize(screen, state, log_file_name)
8
8
  self.screen = screen
9
9
  self.state = state
10
10
  self.scrollbar = Scrollbar.new(screen)
11
11
  self.ansi_renderer = Ansi.new(screen)
12
- self.header = Header.new(screen, state)
12
+ self.header = Header.new(screen, state, log_file_name)
13
13
  self.request_list = RequestList.new(screen, state, scrollbar)
14
14
  self.details = Details.new(screen, state, scrollbar, ansi_renderer)
15
15
  self.update_modal = UpdateModal.new(screen, state)
@@ -20,10 +20,15 @@ module LogBench
20
20
  end
21
21
  FIX
22
22
  },
23
- formatter: {
23
+ lograge_formatter: {
24
24
  title: "Wrong lograge formatter",
25
- description: "LogBench requires LogBench::JsonFormatter for proper log parsing.",
26
- fix: "config.lograge.formatter = LogBench::JsonFormatter.new"
25
+ description: "LogBench requires Lograge::Formatters::Json for lograge formatting.",
26
+ fix: "config.lograge.formatter = Lograge::Formatters::Json.new"
27
+ },
28
+ logger_formatter: {
29
+ title: "Wrong Rails logger formatter",
30
+ description: "LogBench requires LogBench::JsonFormatter for Rails logger formatting.",
31
+ fix: "config.logger.formatter = LogBench::JsonFormatter.new"
27
32
  }
28
33
  }.freeze
29
34
 
@@ -36,7 +41,8 @@ module LogBench
36
41
 
37
42
  validate_lograge_enabled!
38
43
  validate_custom_options!
39
- validate_json_formatter!
44
+ validate_lograge_formatter!
45
+ validate_logger_formatter!
40
46
 
41
47
  true
42
48
  end
@@ -55,10 +61,18 @@ module LogBench
55
61
  end
56
62
  end
57
63
 
58
- def validate_json_formatter!
64
+ def validate_lograge_formatter!
59
65
  formatter = lograge_config&.formatter
66
+ unless formatter.is_a?(Lograge::Formatters::Json)
67
+ raise ConfigurationError, build_error_message(:lograge_formatter)
68
+ end
69
+ end
70
+
71
+ def validate_logger_formatter!
72
+ logger = Rails.application.config.logger
73
+ formatter = logger&.formatter
60
74
  unless formatter.is_a?(LogBench::JsonFormatter)
61
- raise ConfigurationError, build_error_message(:formatter)
75
+ raise ConfigurationError, build_error_message(:logger_formatter)
62
76
  end
63
77
  end
64
78
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LogBench
4
- VERSION = "0.1.6"
4
+ VERSION = "0.1.8"
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: log_bench
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamín Silva
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-06-17 00:00:00.000000000 Z
10
+ date: 2025-06-18 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: zeitwerk