Class: Betterlog::Logger
- Inherits:
-
Logger
- Object
- Logger
- Betterlog::Logger
- Includes:
- Enumerable
- Defined in:
- lib/betterlog/logger.rb
Class Method Summary collapse
Instance Method Summary collapse
- #<<(msg) ⇒ Object
- #add(severity, message = nil, progname = nil) ⇒ Object
- #clear ⇒ Object
- #each(chunk_size: 100 * 1024, &block) ⇒ Object
- #each_chunk(chunk_size: 100 * 1024, &block) ⇒ Object
-
#initialize(redis, shift_age = 0, shift_size = 1048576, name: nil, buffer_size: nil, **opts) ⇒ Logger
constructor
A new instance of Logger.
Constructor Details
#initialize(redis, shift_age = 0, shift_size = 1048576, name: nil, buffer_size: nil, **opts) ⇒ Logger
Returns a new instance of Logger.
5 6 7 8 9 10 |
# File 'lib/betterlog/logger.rb', line 5 def initialize(redis, shift_age = 0, shift_size = 1048576, name: nil, buffer_size: nil, **opts) @redis = redis @name = name || self.class.name @buffer_size = determine_buffer_size(buffer_size) super(nil, shift_age, shift_size, **opts) end |
Class Method Details
.for_redis_url(url, shift_age = 0, shift_size = 1048576, **opts) ⇒ Object
12 13 14 15 16 17 |
# File 'lib/betterlog/logger.rb', line 12 def self.for_redis_url(url, shift_age = 0, shift_size = 1048576, **opts) redis = Redis.new(url: url) redis.ping new(redis, shift_age, shift_size, **opts) rescue Redis::CannotConnectError end |
Instance Method Details
#<<(msg) ⇒ Object
65 66 67 |
# File 'lib/betterlog/logger.rb', line 65 def <<(msg) redis_write(msg) end |
#add(severity, message = nil, progname = nil) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/betterlog/logger.rb', line 44 def add(severity, = nil, progname = nil) severity ||= UNKNOWN if severity < @level return true end if progname.nil? progname = @progname end if .nil? if block_given? = yield else = progname progname = @progname end end redis_write( (format_severity(severity), Time.now, progname, )) true end |
#clear ⇒ Object
69 70 71 72 |
# File 'lib/betterlog/logger.rb', line 69 def clear @redis.del @name self end |
#each(chunk_size: 100 * 1024, &block) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/betterlog/logger.rb', line 90 def each(chunk_size: 100 * 1024, &block) chunk_size > 0 or raise ArgumentError, 'chunk_size > 0 required' Enumerator.new do |y| buffer = '' each_chunk(chunk_size: chunk_size) do |chunk| buffer << chunk buffer.gsub!(/\A(.*?#$/)/) do |line| y.yield(line) '' end end buffer.length > 0 and y.yield(buffer) end.each(&block) end |
#each_chunk(chunk_size: 100 * 1024, &block) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/betterlog/logger.rb', line 74 def each_chunk(chunk_size: 100 * 1024, &block) chunk_size > 0 or raise ArgumentError, 'chunk_size > 0 required' @redis.exists(@name) or return Enumerator.new {} Enumerator.new do |y| name_tmp = "#{@name}_#{rand}" @redis.rename @name, name_tmp s = 0 e = @redis.strlen(name_tmp) - 1 until s > e y.yield @redis.getrange(name_tmp, s, s + chunk_size - 1) s += chunk_size end @redis.del name_tmp end.each(&block) end |