Module: Clavis::Logging

Defined in:
lib/clavis/logging.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.loggerObject



8
9
10
# File 'lib/clavis/logging.rb', line 8

def logger
  @logger ||= defined?(Rails) ? Rails.logger : Logger.new($stdout)
end

Class Method Details

.debug(message) ⇒ Object

Log debug messages

Parameters:

  • message (String)

    The message to log



23
24
25
26
27
28
29
30
# File 'lib/clavis/logging.rb', line 23

def debug(message)
  return unless logger
  return if !message || message.empty?

  # Sanitize any potentially sensitive data
  sanitized_message = filter_sensitive_data(message)
  logger.debug("[Clavis] #{sanitized_message}")
end

.log(message, level = :info) ⇒ Object

The following methods are provided as aliases or for backwards compatibility



71
72
73
74
75
76
77
78
# File 'lib/clavis/logging.rb', line 71

def log(message, level = :info)
  return unless logger
  return if !message || message.empty?

  # Sanitize any potentially sensitive data
  sanitized_message = filter_sensitive_data(message)
  logger.send(level, "[Clavis] #{sanitized_message}")
end

.log_authorization_callback(provider, success) ⇒ Object



106
107
108
109
110
# File 'lib/clavis/logging.rb', line 106

def log_authorization_callback(provider, success)
  return unless verbose_logging?

  log("Authorization callback for #{provider}: #{success ? "success" : "failed"}")
end

.log_authorization_request(provider, params) ⇒ Object



99
100
101
102
103
104
# File 'lib/clavis/logging.rb', line 99

def log_authorization_request(provider, params)
  return unless verbose_logging?

  sanitized_params = filter_sensitive_data(params.to_s)
  log("Authorization request for #{provider}: #{sanitized_params}")
end

.log_custom(operation, success, details = nil) ⇒ Object

Log custom operation results

Parameters:

  • operation (String)

    The name of the operation

  • success (Boolean)

    Whether the operation was successful

  • details (String, nil) (defaults to: nil)

    Optional details about the operation



131
132
133
134
135
# File 'lib/clavis/logging.rb', line 131

def log_custom(operation, success, details = nil)
  return unless verbose_logging?

  log("#{operation}: #{success ? "success" : "failed"}#{details ? " - #{details}" : ""}")
end

.log_error(error) ⇒ Object

Log error messages

Parameters:

  • error (Exception, String)

    The error to log



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/clavis/logging.rb', line 46

def log_error(error)
  return unless logger

  case error
  when Exception
    logger.error("[Clavis] #{error.class.name}: #{error.message}")
    logger.debug("[Clavis] #{error.backtrace.join("\n")}") if error.backtrace
  when String
    logger.error("[Clavis] Error: #{error}")
  end
end

.log_hosted_domain_verification(provider, success, details = nil) ⇒ Object

Log hosted domain verification results



120
121
122
123
124
125
# File 'lib/clavis/logging.rb', line 120

def log_hosted_domain_verification(provider, success, details = nil)
  return unless verbose_logging?

  log("Hosted domain verification for #{provider}: #{success ? "success" : "failed"}" \
      "#{details ? " - #{details}" : ""}")
end

.log_info(message) ⇒ Object

Log informational messages

Parameters:

  • message (String)

    The message to log

  • level (Symbol)

    The log level (:info, :debug, etc.)



35
36
37
38
39
40
41
42
# File 'lib/clavis/logging.rb', line 35

def log_info(message)
  return unless logger
  return if !message || message.empty?

  # Sanitize any potentially sensitive data
  sanitized_message = filter_sensitive_data(message)
  logger.info("[Clavis] #{sanitized_message}")
end

.log_token_exchange(provider, success, details = nil) ⇒ Object



87
88
89
90
91
# File 'lib/clavis/logging.rb', line 87

def log_token_exchange(provider, success, details = nil)
  return unless verbose_logging?

  log("Token exchange for #{provider}: #{success ? "success" : "failed"}#{details ? " - #{details}" : ""}")
end

.log_token_refresh(provider, success, message = nil) ⇒ Object

Older method signatures maintained for compatibility



81
82
83
84
85
# File 'lib/clavis/logging.rb', line 81

def log_token_refresh(provider, success, message = nil)
  return unless verbose_logging?

  log("Token refresh for #{provider}: #{success ? "success" : "failed"}#{message ? " - #{message}" : ""}")
end

.log_token_verification(provider, success, details = nil) ⇒ Object

Log token verification results



113
114
115
116
117
# File 'lib/clavis/logging.rb', line 113

def log_token_verification(provider, success, details = nil)
  return unless verbose_logging?

  log("Token verification for #{provider}: #{success ? "success" : "failed"}#{details ? " - #{details}" : ""}")
end

.log_userinfo_request(provider, success, details = nil) ⇒ Object



93
94
95
96
97
# File 'lib/clavis/logging.rb', line 93

def log_userinfo_request(provider, success, details = nil)
  return unless verbose_logging?

  log("Userinfo request for #{provider}: #{success ? "success" : "failed"}#{details ? " - #{details}" : ""}")
end

.security_warning(message) ⇒ Object

Log security warnings - always logged at WARN level

Parameters:

  • message (String)

    The message to log



60
61
62
63
64
65
66
67
# File 'lib/clavis/logging.rb', line 60

def security_warning(message)
  return unless logger
  return if !message || message.empty?

  # Sanitize any potentially sensitive data
  sanitized_message = filter_sensitive_data(message)
  logger.warn("[Clavis Security Warning] #{sanitized_message}")
end

.verbose_logging?Boolean

Check if verbose logging is enabled

Returns:

  • (Boolean)


15
16
17
18
19
# File 'lib/clavis/logging.rb', line 15

def verbose_logging?
  return false unless defined?(Clavis.configuration)

  Clavis.configuration.verbose_logging == true
end