Class: RootLogger

Inherits:
Logger
  • Object
show all
Defined in:
lib/unicorn-cuba-base/root_logger.rb

Direct Known Subclasses

RootSyslogLogger

Defined Under Namespace

Classes: ClassLogger, MetaData

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logdev = STDERR, &formatter) ⇒ RootLogger

Returns a new instance of RootLogger.



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/unicorn-cuba-base/root_logger.rb', line 73

def initialize(logdev = STDERR, &formatter)
  super(logdev)

  @perf_enabled = false

  @ext_formatter = proc do |severity, datetime, progname, meta, msg|
    if formatter
      formatter.call(severity, datetime, progname, meta, msg)
    else
      "#{datetime.utc.strftime "%Y-%m-%d %H:%M:%S.%6N %Z"} #{meta.to_s} #{severity}: #{msg}\n"
    end
  end

  @meta = .new
  @meta['pid'] = $$

  self.formatter = proc do |severity, datetime, progname, msg|
    @ext_formatter.call(severity, datetime, progname, @meta, msg)
  end
end

Instance Attribute Details

#metaObject

Returns the value of attribute meta.



115
116
117
# File 'lib/unicorn-cuba-base/root_logger.rb', line 115

def meta
  @meta
end

Instance Method Details

#enable_perf_loggingObject



94
95
96
97
# File 'lib/unicorn-cuba-base/root_logger.rb', line 94

def enable_perf_logging
  @perf_enabled = true
  self
end

#inspectObject



142
143
144
# File 'lib/unicorn-cuba-base/root_logger.rb', line 142

def inspect
  "#<RootLogger #{"0x%X" % object_id}>"
end

#logger_for(class_obj) ⇒ Object



107
108
109
# File 'lib/unicorn-cuba-base/root_logger.rb', line 107

def logger_for(class_obj)
  ClassLogger.new(self, class_obj)
end

#perf(msg) ⇒ Object



103
104
105
# File 'lib/unicorn-cuba-base/root_logger.rb', line 103

def perf(msg)
  unknown(msg) if @perf_enabled
end

#perf?Boolean

Returns:

  • (Boolean)


99
100
101
# File 'lib/unicorn-cuba-base/root_logger.rb', line 99

def perf?
  @perf_enabled
end

#root_loggerObject



111
112
113
# File 'lib/unicorn-cuba-base/root_logger.rb', line 111

def root_logger
  self
end

#with_meta(hash) ⇒ Object



117
118
119
120
121
122
123
124
125
126
127
# File 'lib/unicorn-cuba-base/root_logger.rb', line 117

def with_meta(hash)
  n = self.dup
  n.meta = .new(@meta)
  n.meta.merge! hash

  # capture new meta hash with this new formatter proc - needed since old formatter proc will point to old object
  n.formatter = proc do |severity, datetime, progname, msg|
    @ext_formatter.call(severity, datetime, progname, n.meta, msg)
  end
  n
end

#with_meta_context(hash) ⇒ Object



129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/unicorn-cuba-base/root_logger.rb', line 129

def with_meta_context(hash)
  old_meta = @meta
  new_meta = .new(old_meta)
  new_meta.merge! hash

  begin
    @meta = new_meta
    yield
  ensure
    @meta = old_meta
  end
end