Class: Journald::Logger

Inherits:
Object
  • Object
show all
Includes:
Exceptionable, Loggable, Sysloggable
Defined in:
lib/journald/classes/logger.rb,
lib/journald/modules/version.rb,
lib/journald/modules/loggable.rb,
lib/journald/modules/sysloggable.rb,
lib/journald/modules/exceptionable.rb

Defined Under Namespace

Modules: Exceptionable, Loggable, Sysloggable

Constant Summary collapse

VERSION =
"3.0.1"

Constants included from Loggable

Loggable::LEVEL_MAP

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Loggable

#<<, #add, #close, #datetime_format, #datetime_format=, #formatter, #formatter=, #level, #level=, #silence

Methods included from Exceptionable

#exception

Constructor Details

#initialize(progname = nil, min_priority = nil, **tags) ⇒ Logger

Returns a new instance of Logger.



7
8
9
10
11
12
# File 'lib/journald/classes/logger.rb', line 7

def initialize(progname = nil, min_priority = nil, **tags)
  @tags = tags
  @logger = Native
  self.min_priority = min_priority
  self.progname = progname
end

Instance Attribute Details

#min_priorityObject

Returns the value of attribute min_priority.



22
23
24
# File 'lib/journald/classes/logger.rb', line 22

def min_priority
  @min_priority
end

Instance Method Details



36
37
38
39
40
41
# File 'lib/journald/classes/logger.rb', line 36

def print(priority, message)
  send_message(
    priority: priority,
    message: message,
  )
end

#prognameObject



14
15
16
# File 'lib/journald/classes/logger.rb', line 14

def progname
  tag_value(:syslog_identifier)
end

#progname=(value) ⇒ Object



18
19
20
# File 'lib/journald/classes/logger.rb', line 18

def progname=(value)
  tag(syslog_identifier: value)
end

#send_message(hash) ⇒ Object

send systemd-journal message



31
32
33
34
# File 'lib/journald/classes/logger.rb', line 31

def send_message(hash)
  hash_to_send = @tags.merge(hash)
  real_send(hash_to_send)
end

#tag(**tags) ⇒ Object

add tags to all log messages



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/journald/classes/logger.rb', line 46

def tag(**tags)
  values = {}
  if block_given?
    # remember old values
    values = tag_values(*tags.keys)
  end

  tags.each do |key, value|
    @tags[key] = value
  end

  if block_given?
    yield self
  end
ensure
  tag(**values) if values.any? # restore old values if block given
end

#tag_value(key) ⇒ Object

get tag value



65
66
67
# File 'lib/journald/classes/logger.rb', line 65

def tag_value(key)
  @tags[key]
end

#tag_values(*keys) ⇒ Object

get tag values return everything including nil for non-set



71
72
73
# File 'lib/journald/classes/logger.rb', line 71

def tag_values(*keys)
  keys.inject({}) { |hash, key| hash[key] = @tags[key]; hash }
end

#untag(*keys) ⇒ Object

stop adding the tag



76
77
78
79
80
# File 'lib/journald/classes/logger.rb', line 76

def untag(*keys)
  keys.each do |key|
    @tags.delete(key)
  end
end