Module: Onlylogs

Defined in:
lib/onlylogs.rb,
lib/onlylogs/engine.rb,
lib/onlylogs/logger.rb,
lib/onlylogs/version.rb,
lib/onlylogs/formatter.rb,
app/models/onlylogs/file.rb,
app/models/onlylogs/grep.rb,
lib/onlylogs/http_logger.rb,
lib/onlylogs/configuration.rb,
lib/onlylogs/socket_logger.rb,
app/models/onlylogs/batch_sender.rb,
app/jobs/onlylogs/application_job.rb,
app/channels/onlylogs/logs_channel.rb,
app/models/onlylogs/file_path_parser.rb,
app/models/onlylogs/secure_file_path.rb,
app/models/onlylogs/ansi_color_parser.rb,
app/helpers/onlylogs/application_helper.rb,
app/controllers/onlylogs/logs_controller.rb,
app/channels/onlylogs/application_cable/channel.rb,
app/controllers/onlylogs/application_controller.rb

Overview

kudos to github.com/BetterErrors/better_errors for this code!

Defined Under Namespace

Modules: ApplicationCable, ApplicationHelper Classes: AnsiColorParser, ApplicationController, ApplicationJob, BatchSender, Configuration, Engine, Error, File, FilePathParser, Formatter, Grep, HttpLogger, Logger, LogsChannel, LogsController, SecureFilePath, SocketLogger

Constant Summary collapse

VERSION =
"0.4.5"

Class Method Summary collapse

Class Method Details

.available_log_filesObject

Returns all existing files on disk that match the configured allowed_files patterns. Supports direct file paths and glob patterns (e.g., *.log, */.log). Returns Pathname objects so callers can access both the basename and the absolute path.



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/onlylogs/configuration.rb', line 92

def self.available_log_files
  patterns = Array(configuration.log_file_patterns)

  paths = patterns.flat_map do |pattern|
    allowed_file_patterns_for(pattern).flat_map do |expanded_pattern|
      if glob_pattern?(expanded_pattern)
        Dir.glob(expanded_pattern, ::File::FNM_DOTMATCH | ::File::FNM_PATHNAME).select { |p| ::File.file?(p) }
      else
        ::File.file?(expanded_pattern) ? [expanded_pattern] : []
      end
    end
  end

  paths.uniq.sort.map { |p| Pathname.new(p) }
end

.basic_auth_configured?Boolean

Returns:

  • (Boolean)


128
129
130
# File 'lib/onlylogs/configuration.rb', line 128

def self.basic_auth_configured?
  basic_auth_user.present? && basic_auth_password.present?
end

.basic_auth_passwordObject



116
117
118
# File 'lib/onlylogs/configuration.rb', line 116

def self.basic_auth_password
  configuration.basic_auth_password
end

.basic_auth_userObject



112
113
114
# File 'lib/onlylogs/configuration.rb', line 112

def self.basic_auth_user
  configuration.basic_auth_user
end

.configurationObject



71
72
73
# File 'lib/onlylogs/configuration.rb', line 71

def self.configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



75
76
77
# File 'lib/onlylogs/configuration.rb', line 75

def self.configure
  yield configuration
end

.default_log_file_pathObject



108
109
110
# File 'lib/onlylogs/configuration.rb', line 108

def self.default_log_file_path
  configuration.default_log_file_path
end

.disable_basic_authentication?Boolean

Returns:

  • (Boolean)


124
125
126
# File 'lib/onlylogs/configuration.rb', line 124

def self.disable_basic_authentication?
  configuration.disable_basic_authentication
end

.editorObject



136
137
138
# File 'lib/onlylogs/configuration.rb', line 136

def self.editor
  configuration.editor || configuration.default_editor
end

.editor=(editor_symbol) ⇒ Object



140
141
142
143
144
# File 'lib/onlylogs/configuration.rb', line 140

def self.editor=(editor_symbol)
  configuration.editor = editor_symbol
  # Clear the cached editor instance when editor changes
  Onlylogs::FilePathParser.clear_editor_cache
end

.file_path_permitted?(file_path) ⇒ Boolean

Returns:

  • (Boolean)


79
80
81
82
83
84
85
86
87
# File 'lib/onlylogs/configuration.rb', line 79

def self.file_path_permitted?(file_path)
  path = ::File.expand_path(file_path.to_s)

  configuration.log_file_patterns.any? do |pattern|
    allowed_file_patterns_for(pattern).any? do |pat|
      ::File.fnmatch?(pat, path, ::File::FNM_PATHNAME | ::File::FNM_DOTMATCH)
    end
  end
end

.max_line_matchesObject



146
147
148
# File 'lib/onlylogs/configuration.rb', line 146

def self.max_line_matches
  configuration.max_line_matches
end

.parent_controllerObject



120
121
122
# File 'lib/onlylogs/configuration.rb', line 120

def self.parent_controller
  configuration.parent_controller
end

.ripgrep_enabled?Boolean

Returns:

  • (Boolean)


132
133
134
# File 'lib/onlylogs/configuration.rb', line 132

def self.ripgrep_enabled?
  configuration.ripgrep_enabled
end