Class: SemanticLogger::Subscriber

Inherits:
Base
  • Object
show all
Defined in:
lib/semantic_logger/subscriber.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#applicationObject

Allow application name to be set globally or on a per subscriber basis.



36
37
38
# File 'lib/semantic_logger/subscriber.rb', line 36

def application
  @application || SemanticLogger.application
end

#environmentObject

Allow environment name to be set globally or on a per subscriber basis.



41
42
43
# File 'lib/semantic_logger/subscriber.rb', line 41

def environment
  @environment || SemanticLogger.environment
end

#formatterObject

Every appender has its own formatter



7
8
9
# File 'lib/semantic_logger/subscriber.rb', line 7

def formatter
  @formatter
end

#hostObject

Allow host name to be set globally or on a per subscriber basis.



46
47
48
# File 'lib/semantic_logger/subscriber.rb', line 46

def host
  @host || SemanticLogger.host
end

#loggerObject

Give each appender its own logger for logging. For example trace messages sent to services or errors when something fails.



52
53
54
55
56
57
58
59
# File 'lib/semantic_logger/subscriber.rb', line 52

def logger
  @logger ||=
    begin
      logger      = SemanticLogger::Processor.logger.clone
      logger.name = self.class.name
      logger
    end
end

#metrics=(value) ⇒ Object (writeonly)

Sets the attribute metrics

Parameters:

  • value

    the value to set the attribute metrics to.



8
9
10
# File 'lib/semantic_logger/subscriber.rb', line 8

def metrics=(value)
  @metrics = value
end

Instance Method Details

#batch_by_default?Boolean

Whether an appender that implements #batch should be wrapped in a batch proxy automatically. Appenders that support batching but should only batch when explicitly requested (via batch: true) override this to return false.

Returns:

  • (Boolean)


90
91
92
# File 'lib/semantic_logger/subscriber.rb', line 90

def batch_by_default?
  true
end

#closeObject

A subscriber should implement close if it can.



21
22
23
# File 'lib/semantic_logger/subscriber.rb', line 21

def close
  # NOOP
end

#console_output?Boolean

Whether this appender is logging to stdout or stderr.

Returns:

  • (Boolean)


83
84
85
# File 'lib/semantic_logger/subscriber.rb', line 83

def console_output?
  !console_stream.nil?
end

#console_streamObject

The console stream this appender writes to, if any. Returns one of :stdout, :stderr, or nil when not writing to a console stream.



78
79
80
# File 'lib/semantic_logger/subscriber.rb', line 78

def console_stream
  nil
end

#default_formatterObject

Returns [SemanticLogger::Formatters::Default] default formatter for this subscriber.



31
32
33
# File 'lib/semantic_logger/subscriber.rb', line 31

def default_formatter
  SemanticLogger::Formatters::Default.new
end

#flushObject

A subscriber should implement flush if it can.



16
17
18
# File 'lib/semantic_logger/subscriber.rb', line 16

def flush
  # NOOP
end

#levelObject

Returns the current log level if set, otherwise it logs everything it receives.



11
12
13
# File 'lib/semantic_logger/subscriber.rb', line 11

def level
  @level || :trace
end

#log(log) ⇒ Object

Method called to log an event

Raises:

  • (NotImplementedError)


26
27
28
# File 'lib/semantic_logger/subscriber.rb', line 26

def log(log)
  raise NotImplementedError
end

#should_log?(log) ⇒ Boolean

Whether this log entry meets the criteria to be logged by this appender.

Returns:

  • (Boolean)


72
73
74
# File 'lib/semantic_logger/subscriber.rb', line 72

def should_log?(log)
  super && (log.metric_only? ? metrics? : true)
end