Class: FocusNfe::HTTP::Logging
- Inherits:
-
Object
- Object
- FocusNfe::HTTP::Logging
- Defined in:
- lib/focus_nfe/http/logging.rb
Overview
Registra cada requisição/resposta no logger configurado, redigindo dados sensíveis. Concentra o nil-guard, a redação de cabeçalhos e a formatação, mantendo a Connection enxuta.
Contrato do logger plugável
O logger pode ser qualquer objeto compatível com o Logger da biblioteca
padrão: responde a debug, info, warn e error, cada um aceitando uma
mensagem ou um bloco. A gem sempre usa a forma com bloco
(+logger.info { ... }+), de modo que a mensagem só é construída quando o
nível está habilitado. Logger.new($stdout), Rails.logger e
ActiveSupport::Logger conformam. Quando o logger é nil (padrão da
Configuration), o logging fica inteiramente desligado, sem custo.
Dados sensíveis
Cabeçalhos em SENSITIVE_HEADERS (notadamente Authorization) nunca são
registrados — seus valores viram REDACTED. O corpo da requisição (que
carrega o payload fiscal com CPF/CNPJ e valores) nunca é logado; o corpo da
resposta só aparece em erros (status >= 400), truncado a BODY_MAX.
Constant Summary collapse
- REDACTED =
Returns substituto registrado no lugar de valores sensíveis.
"[FILTERED]"- SENSITIVE_HEADERS =
Returns nomes de cabeçalho redigidos (comparados em minúsculas).
%w[authorization].freeze
- BODY_MAX =
Returns tamanho máximo do corpo de erro registrado.
2_000
Instance Method Summary collapse
- #failure(verb, url, error, elapsed) ⇒ void
-
#initialize(logger) ⇒ Logging
constructor
A new instance of Logging.
- #request(verb, url, headers) ⇒ void
- #response(verb, url, status, elapsed, body) ⇒ void
Constructor Details
#initialize(logger) ⇒ Logging
Returns a new instance of Logging.
36 37 38 |
# File 'lib/focus_nfe/http/logging.rb', line 36 def initialize(logger) @logger = logger end |
Instance Method Details
#failure(verb, url, error, elapsed) ⇒ void
This method returns an undefined value.
75 76 77 78 79 80 |
# File 'lib/focus_nfe/http/logging.rb', line 75 def failure(verb, url, error, elapsed) logger = @logger return unless logger logger.error { "[focus_nfe] ✕ #{verb.to_s.upcase} #{url} #{error.} (#{ms(elapsed)}ms)" } end |
#request(verb, url, headers) ⇒ void
This method returns an undefined value.
44 45 46 47 48 49 |
# File 'lib/focus_nfe/http/logging.rb', line 44 def request(verb, url, headers) logger = @logger return unless logger logger.debug { "[focus_nfe] → #{verb.to_s.upcase} #{url} headers=#{redact(headers)}" } end |
#response(verb, url, status, elapsed, body) ⇒ void
This method returns an undefined value.
57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/focus_nfe/http/logging.rb', line 57 def response(verb, url, status, elapsed, body) logger = @logger return unless logger linha = "[focus_nfe] ← #{status} #{verb.to_s.upcase} #{url} (#{ms(elapsed)}ms)" if status >= 400 logger.warn { "#{linha} body=#{truncate(body)}" } else logger.info { linha } end end |