Module: Labkit::Logging::FieldValidator Private
- Defined in:
- lib/labkit/logging/field_validator.rb,
lib/labkit/logging/field_validator/config.rb,
lib/labkit/logging/field_validator/registry.rb,
lib/labkit/logging/field_validator/log_interceptor.rb
Overview
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Runtime validator for logging fields. Validates logged fields against standard and deprecated field lists. This validator is automatically injected in non-production environments. Offenses are collected during test runs and development.
Defined Under Namespace
Modules: Config, LogInterceptor Classes: Registry
Class Method Summary collapse
- .clear_offenses! ⇒ Object
- .initialize_todo_file ⇒ Object
-
.inject! ⇒ Object
Inject the validator into JsonLogger.
- .process_violations ⇒ Object
Class Method Details
.clear_offenses! ⇒ Object
62 63 64 |
# File 'lib/labkit/logging/field_validator.rb', line 62 def clear_offenses! Registry.instance.clear! end |
.initialize_todo_file ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/labkit/logging/field_validator.rb', line 32 def initialize_todo_file Config.init_file! warn "Created .labkit_logging_todo.yml with skip_ci_failure enabled." warn "" warn "Next steps:" warn "1. Commit this file to source control" warn "2. Push and let CI run to generate offense logs" warn "3. Run: bundle exec labkit-logging fetch <project> <pipeline_id>" warn "4. Commit the populated todo file (skip_ci_failure will be removed automatically)" end |
.inject! ⇒ Object
Inject the validator into JsonLogger
20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/labkit/logging/field_validator.rb', line 20 def inject! return if @injected # If the config file does not exist, we don't inject the validator. # To enable field validation in a repository, a config file must exist. return unless Config.config_file_exists? ::Labkit::Logging::JsonLogger.prepend(LogInterceptor) Kernel.at_exit { FieldValidator.process_violations } @injected = true end |
.process_violations ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/labkit/logging/field_validator.rb', line 43 def process_violations detected_offenses, new_offenses, removed_offenses = Registry.instance.finalize return if detected_offenses.empty? && new_offenses.empty? && removed_offenses.empty? in_ci = ENV["CI"] == "true" output_ndjson(detected_offenses) if in_ci # Auto-remove fixed offenses (not in CI to avoid race conditions) handle_removed_offenses(removed_offenses) if removed_offenses.any? && !in_ci if ENV["LABKIT_LOGGING_TODO_UPDATE"] == "true" handle_update(new_offenses) elsif new_offenses.any? handle_new_offenses(new_offenses) end end |