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 = MetaData.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 = MetaData.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 = MetaData.new(old_meta)
	new_meta.merge! hash

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