class Journald::Logger

Constants

VERSION

Attributes

min_priority[R]

Public Class Methods

new(progname = nil, min_priority = nil, **tags) click to toggle source
# 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

Public Instance Methods

min_priority=(value) click to toggle source
# File lib/journald/classes/logger.rb, line 24
def min_priority=(value)
  @min_priority = value ? value.to_i : ::Journald::LOG_DEBUG
end
print(priority, message) click to toggle source
progname() click to toggle source
# File lib/journald/classes/logger.rb, line 14
def progname
  tag_value(:syslog_identifier)
end
progname=(value) click to toggle source
# File lib/journald/classes/logger.rb, line 18
def progname=(value)
  tag(syslog_identifier: value)
end
send(hash) click to toggle source

send systemd-journal message

# File lib/journald/classes/logger.rb, line 31
def send(hash)
  hash_to_send = @tags.merge(hash)
  real_send(hash_to_send)
end
tag(**tags) { |self| ... } click to toggle source

add tags to all log messages

# 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) click to toggle source

get tag value

# File lib/journald/classes/logger.rb, line 65
def tag_value(key)
  @tags[key]
end
tag_values(*keys) click to toggle source

get tag values return everything including nil for non-set

# File lib/journald/classes/logger.rb, line 71
def tag_values(*keys)
  keys.inject({}) { |hash, key| hash[key] = @tags[key]; hash }
end
untag(*keys) click to toggle source

stop adding the tag

# File lib/journald/classes/logger.rb, line 76
def untag(*keys)
  keys.each do |key|
    @tags.delete(key)
  end
end

Protected Instance Methods

tag_trace_location(location) click to toggle source

used internally by exception() and TraceLogger

# File lib/journald/classes/logger.rb, line 85
def tag_trace_location(location)
  tag code_file: location.path,
      code_line: location.lineno,
      code_func: location.label
end
untag_trace_location() click to toggle source
# File lib/journald/classes/logger.rb, line 91
def untag_trace_location
  untag :code_file, :code_line, :code_func
end

Private Instance Methods

real_send(hash) click to toggle source
# File lib/journald/classes/logger.rb, line 97
def real_send(hash)
  hash = hash.delete_if { |_, v| v.nil? }

  array_to_send = hash.map do |k,v|
    key = k.to_s.upcase
    value = v.to_s

    if key == 'PRIORITY'
      priority = value.to_i

      return 0 if priority > @min_priority # DEBUG = 7, ALERT = 1
    end

    "#{key}=#{value}"
  end

  @logger.send(*array_to_send)
end