Class: OneApm::Logger::AuditLogger
- Inherits:
-
Object
- Object
- OneApm::Logger::AuditLogger
- Defined in:
- lib/one_apm/logger/audit_logger.rb
Instance Attribute Summary collapse
-
#enabled ⇒ Object
writeonly
Sets the attribute enabled.
Instance Method Summary collapse
- #create_log_formatter ⇒ Object
- #enabled? ⇒ Boolean
- #ensure_log_path ⇒ Object
-
#initialize ⇒ AuditLogger
constructor
A new instance of AuditLogger.
- #log_request(uri, data, marshaller) ⇒ Object
- #log_response(response) ⇒ Object
- #setup? ⇒ Boolean
- #setup_logger ⇒ Object
Constructor Details
Instance Attribute Details
#enabled=(value) ⇒ Object (writeonly)
Sets the attribute enabled
15 16 17 |
# File 'lib/one_apm/logger/audit_logger.rb', line 15 def enabled=(value) @enabled = value end |
Instance Method Details
#create_log_formatter ⇒ Object
87 88 89 90 91 92 |
# File 'lib/one_apm/logger/audit_logger.rb', line 87 def create_log_formatter @hostname = OneApm::Agent::Hostname.get Proc.new do |severity, time, progname, msg| "[#{time} #{@hostname} (#{$$})] : #{msg}\n" end end |
#enabled? ⇒ Boolean
17 18 19 |
# File 'lib/one_apm/logger/audit_logger.rb', line 17 def enabled? @enabled end |
#ensure_log_path ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/one_apm/logger/audit_logger.rb', line 71 def ensure_log_path path = File.(OneApm::Manager.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}" OneApm::Manager.logger.warn(msg) path = nil end path end |
#log_request(uri, data, marshaller) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/one_apm/logger/audit_logger.rb', line 25 def log_request(uri, data, marshaller) if enabled? setup_logger unless setup? request_body = if marshaller.class.human_readable? marshaller.dump(data, :encoder => @encoder) else marshaller.prepare(data, :encoder => @encoder).inspect end if uri =~ /analytic_event_data/ @log.info("REQUEST: #{uri}") @log.info("REQUEST BODY: #{request_body}") else @log.info("REQUEST: #{uri}") @log.info("REQUEST BODY: #{request_body}") end end rescue StandardError, SystemStackError, SystemCallError => e OneApm::Manager.logger.warn("Failed writing to audit log", e) rescue Exception => e OneApm::Manager.logger.warn("Failed writing to audit log with exception. Re-raising in case of interupt.", e) raise end |
#log_response(response) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/one_apm/logger/audit_logger.rb', line 48 def log_response(response) if enabled? setup_logger unless setup? @log.info("RESPONSE: #{response.inspect}") end rescue StandardError, SystemStackError, SystemCallError => e OneApm::Manager.logger.warn("Failed writing to audit log", e) rescue Exception => e OneApm::Manager.logger.warn("Failed writing to audit log with exception. Re-raising in case of interupt.", e) raise end |
#setup? ⇒ Boolean
21 22 23 |
# File 'lib/one_apm/logger/audit_logger.rb', line 21 def setup? !@log.nil? end |
#setup_logger ⇒ Object
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/one_apm/logger/audit_logger.rb', line 60 def setup_logger path = ensure_log_path if path @log = ::Logger.new(path) @log.formatter = create_log_formatter OneApm::Manager.logger.info("Audit log enabled at '#{path}'") else @log = OneApm::Logger::NullLogger.new end end |