class NewRelic::Agent::AuditLogger
Attributes
enabled[W]
Public Class Methods
new()
click to toggle source
# File lib/new_relic/agent/audit_logger.rb, line 11 def initialize @enabled = NewRelic::Agent.config[:'audit_log.enabled'] @endpoints = NewRelic::Agent.config[:'audit_log.endpoints'] @encoder = NewRelic::Agent::NewRelicService::Encoders::Identity end
Public Instance Methods
allowed_endpoint?(uri)
click to toggle source
# File lib/new_relic/agent/audit_logger.rb, line 45 def allowed_endpoint?(uri) @endpoints.any? { |endpoint| uri =~ endpoint } end
create_log_formatter()
click to toggle source
# File lib/new_relic/agent/audit_logger.rb, line 84 def create_log_formatter @hostname = NewRelic::Agent::Hostname.get @prefix = wants_stdout? ? '** [NewRelic]' : '' Proc.new do |severity, time, progname, msg| "#{@prefix}[#{time} #{@hostname} (#{$$})] : #{msg}\n" end end
enabled?()
click to toggle source
# File lib/new_relic/agent/audit_logger.rb, line 19 def enabled? @enabled end
ensure_log_path()
click to toggle source
# File lib/new_relic/agent/audit_logger.rb, line 64 def ensure_log_path path = File.expand_path(NewRelic::Agent.config[:'audit_log.path']) log_dir = File.dirname(path) begin FileUtils.mkdir_p(log_dir) FileUtils.touch(path) rescue SystemCallError => e msg = "Audit log disabled, failed opening log at '#{path}': #{e}" ::NewRelic::Agent.logger.warn(msg) path = nil end path end
log_request(uri, data, marshaller)
click to toggle source
# File lib/new_relic/agent/audit_logger.rb, line 27 def log_request(uri, data, marshaller) return unless enabled? && allowed_endpoint?(uri) setup_logger unless setup? request_body = if marshaller.class.human_readable? marshaller.dump(data, :encoder => @encoder) else marshaller.prepare(data, :encoder => @encoder).inspect end @log.info("REQUEST: #{uri}") @log.info("REQUEST BODY: #{request_body}") rescue StandardError, SystemStackError, SystemCallError => e ::NewRelic::Agent.logger.warn("Failed writing to audit log", e) rescue Exception => e ::NewRelic::Agent.logger.warn("Failed writing to audit log with exception. Re-raising in case of interupt.", e) raise end
setup?()
click to toggle source
# File lib/new_relic/agent/audit_logger.rb, line 23 def setup? !@log.nil? end
setup_logger()
click to toggle source
# File lib/new_relic/agent/audit_logger.rb, line 49 def setup_logger if wants_stdout? # Using $stdout global for easier reassignment in testing @log = ::Logger.new($stdout) ::NewRelic::Agent.logger.info("Audit log enabled to STDOUT") elsif path = ensure_log_path @log = ::Logger.new(path) ::NewRelic::Agent.logger.info("Audit log enabled at '#{path}'") else @log = NewRelic::Agent::NullLogger.new end @log.formatter = create_log_formatter end
wants_stdout?()
click to toggle source
# File lib/new_relic/agent/audit_logger.rb, line 80 def wants_stdout? ::NewRelic::Agent.config[:'audit_log.path'].upcase == "STDOUT" end