logbert 0.6.14 → 0.6.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a17abf78f5b057b2b2eeece44095a82f33d55cf6
4
- data.tar.gz: 27c0ec3dbe2b526f3fb4f130f0abb5dca93ac4ff
3
+ metadata.gz: b9c6e7cee9ea7cc78ff9fffdac0d78200909876e
4
+ data.tar.gz: a47fa209a40fb1186cc1317ac9b98670b5534d14
5
5
  SHA512:
6
- metadata.gz: cdef9e6c3d9244e25ddd92740f32bf17c31f93d075a6f5cf5ba50767cfa934bf68ced9ff8ea687454d0f1389618c700c24bc01c63a983f91f9d025f2b6adb749
7
- data.tar.gz: ffc2bad997dcbc6560f2f250665463e76d0bc7601b4400abc147aa635da8e78bb7fd58a73dec4b95f1394b5ec7c02755669d87f398d2245d6d38aed57b9f1677
6
+ metadata.gz: c84631b1cdb64102253b875c728c75592b03336bc261f93526aa11abb42135f10d513ea17a07d2b0895e4f5010a4111d8c08333af31f4aa85bc891583da32cda
7
+ data.tar.gz: f3dd689d7c3b4c25d27bfef241279153bd1ddb113c29d74ebf0884dc425b2b39787df79596a46a64664884b3f78fe0c083a6aead47058f0a8f29a7a8006f34a4
@@ -1,45 +1,3 @@
1
1
 
2
- require 'logbert/formatters'
3
-
4
- module Logbert
5
- module Handlers
6
-
7
-
8
- class BaseHandler
9
-
10
- def formatter
11
- @formatter ||= Logbert::Formatters::SimpleFormatter.new
12
- end
13
-
14
- def formatter=(value)
15
- @formatter = value
16
- end
17
-
18
- def publish(message)
19
- emit self.formatter.format(message)
20
- end
21
-
22
-
23
- def emit(output)
24
- raise NotImplementedError
25
- end
26
-
27
- end
28
-
29
-
30
- class StreamHandler < BaseHandler
31
- attr_accessor :stream
32
-
33
- def initialize(stream = $stderr)
34
- @stream = stream
35
- end
36
-
37
- def emit(output)
38
- @stream.puts output
39
- end
40
-
41
- end
42
-
43
-
44
- end
45
- end
2
+ require 'logbert/handlers/stream_handler.rb'
3
+ require 'logbert/handlers/time_rotator.rb'
@@ -0,0 +1,30 @@
1
+
2
+ require 'logbert/formatters'
3
+
4
+ module Logbert
5
+ module Handlers
6
+
7
+
8
+ class BaseHandler
9
+
10
+ def formatter
11
+ @formatter ||= Logbert::Formatters::SimpleFormatter.new
12
+ end
13
+
14
+ def formatter=(value)
15
+ @formatter = value
16
+ end
17
+
18
+ def publish(message)
19
+ emit self.formatter.format(message)
20
+ end
21
+
22
+ def emit(output)
23
+ raise NotImplementedError
24
+ end
25
+
26
+ end
27
+
28
+
29
+ end
30
+ end
@@ -0,0 +1,31 @@
1
+
2
+ require 'logbert/handlers/base_handler'
3
+
4
+ module Logbert
5
+
6
+ module Handlers
7
+
8
+ class StreamHandler < Logbert::Handlers::BaseHandler
9
+ attr_reader :stream
10
+
11
+ def initialize(stream = $stderr)
12
+ @stream = stream
13
+ end
14
+
15
+ def self.for_path(path)
16
+ fout = File.open(path, "ab")
17
+ StreamHandler.new fout
18
+ end
19
+
20
+
21
+ def emit(output)
22
+ @stream.puts output
23
+ @stream.flush
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+
@@ -0,0 +1,80 @@
1
+
2
+ require 'fileutils'
3
+ require 'logbert/handlers/base_handler'
4
+
5
+ module Logbert
6
+
7
+ module Handlers
8
+
9
+ class LocaltimeFormatter
10
+
11
+ attr_accessor :format
12
+
13
+ def initialize(format = "%Y-%m-%d-%H%M")
14
+ @format = format
15
+ end
16
+
17
+ def format(time)
18
+ time.strftime(@format)
19
+ end
20
+ end
21
+
22
+
23
+ class TimeRotator < Logbert::Handlers::BaseHandler
24
+
25
+
26
+ attr_reader :path, :stream, :timestamp_formatter
27
+ attr_reader :interval, :expiration_time
28
+
29
+ def initialize(path, options = {})
30
+ @path = path
31
+ @timestamp_formatter = options[:timestamp_formatter] || LocaltimeFormatter.new
32
+ @interval = options.fetch(:iterval, 24 * 60 * 60)
33
+
34
+ rotate_log!
35
+ end
36
+
37
+
38
+ def rotation_needed?
39
+ Time.now > @expiration_time
40
+ end
41
+
42
+
43
+ def rotate_log!
44
+ if @stream and not @stream.closed?
45
+ @stream.close
46
+ end
47
+
48
+ if File.exists? @path
49
+ FileUtils.mv @path, archive_destination
50
+ end
51
+
52
+ @stream = File.open(@path, "ab")
53
+
54
+ @expiration_time = Time.now + @interval
55
+ end
56
+
57
+
58
+
59
+ def emit(output)
60
+ rotate_log! if rotation_needed?
61
+ @stream.puts output
62
+ @stream.flush
63
+ end
64
+
65
+
66
+ private
67
+
68
+
69
+ def archive_destination
70
+ timestamp = @timestamp_formatter.format(File.ctime(@path))
71
+ dest = "#{path}.#{timestamp}"
72
+ return dest
73
+ end
74
+
75
+ end
76
+
77
+
78
+ end
79
+
80
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logbert
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.14
4
+ version: 0.6.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Lauber
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-14 00:00:00.000000000 Z
11
+ date: 2013-06-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Change your logging behaviors without mucking with your code!
14
14
  email: constructible.truth@gmail.com
@@ -17,6 +17,9 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - lib/logbert/formatters.rb
20
+ - lib/logbert/handlers/base_handler.rb
21
+ - lib/logbert/handlers/stream_handler.rb
22
+ - lib/logbert/handlers/time_rotator.rb
20
23
  - lib/logbert/handlers.rb
21
24
  - lib/logbert/levels.rb
22
25
  - lib/logbert/logger.rb