lumberjack_mongo_device 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/MIT_LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Brian Durand
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,17 @@
1
+ = Lumberjack Mongo Device
2
+
3
+ This gem provides a logging device for the lumberjack gem that will log to a MongoDB collection.
4
+
5
+ MongoDB can make a good destination for centralized log data because it is fast, clients don't need to wait for confirmation that log messages are persisted, and it has a concept of capped collections which are fixed in size and will simply roll over and start writing from the beginning when they are full.
6
+
7
+ == Example Usage
8
+
9
+ require 'lumberjack_mongo_device'
10
+
11
+ # Connect to mongodb on localhost:27017 and use the "log" collection in the "app" database.
12
+ # The log collection will be created as a capped collection with a maximum size of 1GB.
13
+ device = Lumberjack::MongoDevice.new(:db => "app", :collection => "log", :size => 1024 ** 3)
14
+ logger = Lumberjack::Logger.new(device)
15
+ logger.info("Write me to MongoDB!")
16
+
17
+ See MongoDevice for more details.
data/Rakefile ADDED
@@ -0,0 +1,56 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/gempackagetask'
4
+ require 'rake/rdoctask'
5
+
6
+ desc 'Default: run unit tests.'
7
+ task :default => :test
8
+
9
+ desc 'RVM likes to call it tests'
10
+ task :tests => :test
11
+
12
+ begin
13
+ require 'rspec'
14
+ require 'rspec/core/rake_task'
15
+ desc 'Run the unit tests'
16
+ RSpec::Core::RakeTask.new(:test)
17
+ rescue LoadError
18
+ task :test do
19
+ STDERR.puts "You must have rspec 2.0 installed to run the tests"
20
+ end
21
+ end
22
+
23
+ desc 'Generate rdoc.'
24
+ Rake::RDocTask.new(:rdoc) do |rdoc|
25
+ rdoc.rdoc_dir = 'rdoc'
26
+ rdoc.options << '--title' << 'Lumberjack Mongo Device' << '--line-numbers' << '--inline-source' << '--main' << 'README.rdoc'
27
+ rdoc.rdoc_files.include('README.rdoc')
28
+ rdoc.rdoc_files.include('lib/**/*.rb')
29
+ end
30
+
31
+ namespace :rbx do
32
+ desc "Cleanup *.rbc files in lib directory"
33
+ task :delete_rbc_files do
34
+ FileList["lib/**/*.rbc"].each do |rbc_file|
35
+ File.delete(rbc_file)
36
+ end
37
+ nil
38
+ end
39
+ end
40
+
41
+ spec_file = File.expand_path('../lumberjack_mongo_device.gemspec', __FILE__)
42
+ if File.exist?(spec_file)
43
+ spec = eval(File.read(spec_file))
44
+
45
+ Rake::GemPackageTask.new(spec) do |p|
46
+ p.gem_spec = spec
47
+ end
48
+ Rake.application["package"].prerequisites.unshift("rbx:delete_rbc_files")
49
+
50
+ desc "Release to rubygems.org"
51
+ task :release => :package do
52
+ require 'rake/gemcutter'
53
+ Rake::Gemcutter::Tasks.new(spec).define
54
+ Rake::Task['gem:push'].invoke
55
+ end
56
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
@@ -0,0 +1,145 @@
1
+ require 'mongo'
2
+ require 'lumberjack'
3
+
4
+ module Lumberjack
5
+ # Write Lumberjack log entries to a MongoDB collection.
6
+ #
7
+ # Log entries will be stored as documents in a collection with fields for:
8
+ #
9
+ # * time
10
+ # * severity (as a string i.e. "DEBUG")
11
+ # * progname
12
+ # * pid
13
+ # * unit_of_work_id
14
+ # * message
15
+ class MongoDevice < Device
16
+ TIME = "time"
17
+ SEVERITY = "severity"
18
+ PROGNAME = "progname"
19
+ PID = "pid"
20
+ UNIT_OF_WORK_ID = "unit_of_work_id"
21
+ MESSAGE = "message"
22
+
23
+ DEFAULT_BUFFER_SIZE = 50
24
+
25
+ # Get the MongoDB collection that is being written to.
26
+ attr_reader :collection
27
+
28
+ # The size of the internal buffer. Log entries are buffered so they can be sent to MongoDB in batches for efficiency.
29
+ attr_accessor :buffer_size
30
+
31
+ # Initialize the device by passing in either a Mongo::Collection object or a hash of options
32
+ # to create the collection. Available options are:
33
+ #
34
+ # * <tt>:host</tt> - The host name to connect to (defaults to localhost).
35
+ # * <tt>:port</tt> - The port to connect to (defaults to 27017).
36
+ # * <tt>:db</tt> - The database name to use (required).
37
+ # * <tt>:collection</tt> - The collection name to use (required).
38
+ # * <tt>:username</tt> - The username to authenticate with for database connections (optional).
39
+ # * <tt>:password</tt> - The password to authenticate with for database connections (optional).
40
+ # * <tt>:max</tt> - If the collection does not aleady exist it will be capped at this number of records.
41
+ # * <tt>:size</tt> - If the collection does not aleady exist it will be capped at this size in bytes.
42
+ # * <tt>:buffer_size</tt> - The number of entries that will be buffered before they are sent to MongoDB.
43
+ #
44
+ # If the collection does not already exist, it will be created. If either the <tt>:max</tt> or <tt>:size</tt>
45
+ # options are provided, it will be created as a capped collection. Indexes will be created on +unit_of_work_id+
46
+ # and +time+.
47
+ def initialize(collection_or_options, options = nil)
48
+ if collection_or_options.is_a?(Hash)
49
+ options = collection_or_options.dup
50
+ host = options.delete(:host)
51
+ port = options.delete(:port)
52
+ db_name = options.delete(:db)
53
+ collection = options.delete(:collection)
54
+ username = options.delete(:username)
55
+ password = options.delete(:password)
56
+ max = options.delete(:max)
57
+ size = options.delete(:size)
58
+
59
+ @buffer_size = options.delete(:buffer_size) || DEFAULT_BUFFER_SIZE
60
+
61
+ connection = Mongo::Connection.new(host, port, options)
62
+ db = connection.db(db_name)
63
+ db.authenticate(username, password) if username && password
64
+ if db.collections.collect{|coll| coll.name}.include?(collection.to_s)
65
+ @collection = db.collection(collection)
66
+ else
67
+ begin
68
+ @collection = db.create_collection(collection, :capped => (max || size), :max => max, :size => size)
69
+ @collection.ensure_index(:time)
70
+ @collection.ensure_index(:unit_of_work_id)
71
+ rescue Mongo::OperationFailure
72
+ # Create collection can fail if multiple processes try to create it at once.
73
+ @collection = db.collection(collection)
74
+ raise unless @collection
75
+ end
76
+ end
77
+ else
78
+ @collection = collection_or_options
79
+ @buffer_size = options[:buffer_size] if options
80
+ @buffer_size ||= DEFAULT_BUFFER_SIZE
81
+ end
82
+
83
+ @buffer = []
84
+ @lock = Mutex.new
85
+ end
86
+
87
+ def write(entry)
88
+ @lock.synchronize do
89
+ @buffer << entry
90
+ end
91
+ flush if @buffer.size >= @buffer_size
92
+ end
93
+
94
+ def flush
95
+ docs = []
96
+ @lock.synchronize do
97
+ @buffer.each do |entry|
98
+ docs << {:time => entry.time, :severity => entry.severity_label, :progname => entry.progname, :pid => entry.pid, :unit_of_work_id => entry.unit_of_work_id, :message => entry.message}
99
+ end
100
+ begin
101
+ @collection.insert(docs)
102
+ rescue => e
103
+ puts e.inspect
104
+ puts e.backtrace.join("\n")
105
+ $stderr.write("#{e.class.name}: #{e.message}#{' at ' + e.backtrace.first if e.backtrace}")
106
+ @buffer.each do |entry|
107
+ $stderr.puts(entry.to_s)
108
+ end
109
+ $stderr.flush
110
+ ensure
111
+ @buffer.clear
112
+ end
113
+ end
114
+ end
115
+
116
+ def close
117
+ flush
118
+ @lock.synchronize do
119
+ @collection.db.connection.close
120
+ end
121
+ end
122
+
123
+ # Retrieve Lumberjack::LogEntry objects from the MongoDB collection. If a block is given, it will be yielded to
124
+ # with each entry. Otherwise, it will return an array of all the entries.
125
+ def find(selector, options = {}, &block)
126
+ entries = []
127
+ @collection.find(selector, options) do |cursor|
128
+ cursor.each do |doc|
129
+ entry = LogEntry.new(doc[TIME], doc[SEVERITY], doc[MESSAGE], doc[PROGNAME], doc[PID], doc[UNIT_OF_WORK_ID])
130
+ if block_given?
131
+ yield entry
132
+ else
133
+ entries << entry
134
+ end
135
+ end
136
+ end
137
+ block_given? ? nil : entries
138
+ end
139
+
140
+ # Retrieve the last entries from the log.
141
+ def last(number_of_entries = 1)
142
+ find(nil, :sort => [:_id, :descending], :limit => number_of_entries).reverse
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,221 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lumberjack::MongoDevice do
4
+
5
+ before :all do
6
+ start_mongo
7
+ end
8
+
9
+ after :all do
10
+ stop_mongo
11
+ end
12
+
13
+ after :each do
14
+ collection.drop
15
+ collection.db.connection.close
16
+ end
17
+
18
+ let(:time_1){ Time.parse("2011-02-01T18:32:31Z") }
19
+ let(:time_2){ Time.parse("2011-02-01T18:32:32Z") }
20
+ let(:time_3){ Time.parse("2011-02-01T18:32:33Z") }
21
+ let(:entry_1){ Lumberjack::LogEntry.new(time_1, Lumberjack::Severity::INFO, "message 1", "test", 12345, "ABCD") }
22
+ let(:entry_2){ Lumberjack::LogEntry.new(time_2, Lumberjack::Severity::WARN, "message 2", "spec", 4321, "1234") }
23
+ let(:entry_3){ Lumberjack::LogEntry.new(time_3, Lumberjack::Severity::ERROR, "message 3", "test", 12345, "ABCD") }
24
+
25
+ let(:db){ Mongo::Connection.new.db("test") }
26
+ let(:collection){ db.collection("log") }
27
+
28
+ it "should use an existing collection" do
29
+ device = Lumberjack::MongoDevice.new(collection)
30
+ device.write(entry_1)
31
+ device.flush
32
+ collection.count.should == 1
33
+ end
34
+
35
+ it "should connect to a specified database collection on a specified host and port" do
36
+ connection = db.connection
37
+ collection
38
+ Mongo::Connection.should_receive(:new).with("127.0.0.1", 12345, :safe => true).and_return(connection)
39
+ connection.should_receive(:db).with("test").and_return(db)
40
+ db.should_receive(:create_collection).with("log", :capped => nil, :size => nil, :max => nil).and_return(collection)
41
+ device = Lumberjack::MongoDevice.new(:host => "127.0.0.1", :port => 12345, :safe => true, :db => "test", :collection => "log")
42
+ end
43
+
44
+ it "should connect to a server and authenticate to use the database if :username and :password are specified" do
45
+ connection = db.connection
46
+ collection
47
+ Mongo::Connection.should_receive(:new).and_return(connection)
48
+ connection.should_receive(:db).with("test").and_return(db)
49
+ db.should_receive(:authenticate).with("user", "pass")
50
+ device = Lumberjack::MongoDevice.new(:username => "user", :password => "pass", :db => "test", :collection => "log")
51
+ end
52
+
53
+ it "should connect to a server and create a new collection if it doesn't exist" do
54
+ db.collections.collect{|c| c.name}.should_not include("log")
55
+ device = Lumberjack::MongoDevice.new(:db => "test", :collection => "log")
56
+ db.collections.collect{|c| c.name}.should include("log")
57
+ collection.index_information.collect{|k, v| v["key"].collect{|k1, v1| k1}.join}.sort.should == ["_id", "time", "unit_of_work_id"]
58
+ end
59
+
60
+ it "should connect to a server and create a new capped collection if it doesn't exist and :size is specified" do
61
+ db.collections.collect{|c| c.name}.should_not include("log")
62
+ device = Lumberjack::MongoDevice.new(:db => "test", :collection => "log", :size => 32768)
63
+ db.collections.collect{|c| c.name}.should include("log")
64
+ collection.options["capped"].should
65
+ collection.options["size"].should == 32768
66
+ end
67
+
68
+ it "should connect to a server and create a new capped collection if it doesn't exist and :max is specified" do
69
+ db.collections.collect{|c| c.name}.should_not include("log")
70
+ device = Lumberjack::MongoDevice.new(:db => "test", :collection => "log", :max => 1000)
71
+ db.collections.collect{|c| c.name}.should include("log")
72
+ collection.options["capped"].should
73
+ collection.options["max"].should == 1000
74
+ end
75
+
76
+ it "should connect to a server and use an existing collection if it exists" do
77
+ collection.create_index(:pid)
78
+ db.collections.collect{|c| c.name}.should include("log")
79
+ device = Lumberjack::MongoDevice.new(:db => "test", :collection => "log", :max => 1000)
80
+ db.collections.collect{|c| c.name}.should include("log")
81
+ collection.options.should == nil
82
+ collection.index_information.collect{|k, v| v["key"].collect{|k1, v1| k1}.join}.sort.should == ["_id", "pid"]
83
+ end
84
+
85
+ it "should write entries to the collection" do
86
+ device = Lumberjack::MongoDevice.new(:db => "test", :collection => "log")
87
+ device.write(entry_1)
88
+ device.write(entry_2)
89
+ device.write(entry_3)
90
+ device.flush
91
+ collection.count.should == 3
92
+ doc = collection.find_one(:message => "message 1")
93
+ doc["time"].should == time_1
94
+ doc["severity"].should == "INFO"
95
+ doc["progname"].should == entry_1.progname
96
+ doc["pid"].should == entry_1.pid
97
+ doc["unit_of_work_id"].should == entry_1.unit_of_work_id
98
+ doc["message"].should == entry_1.message
99
+ end
100
+
101
+ it "should close and flush a connection" do
102
+ device = Lumberjack::MongoDevice.new(:db => "test", :collection => "log")
103
+ connection = device.collection.db.connection
104
+ connection.should_receive(:close)
105
+ device.should_receive(:flush)
106
+ device.close
107
+ end
108
+
109
+ context "buffering" do
110
+ it "should buffer log entries and insert them in batches" do
111
+ device = Lumberjack::MongoDevice.new(:db => "test", :collection => "log")
112
+ device.write(entry_1)
113
+ device.write(entry_2)
114
+ device.write(entry_3)
115
+ collection.count.should == 0
116
+ device.flush
117
+ collection.count.should == 3
118
+ end
119
+
120
+ it "should be able to control the buffer size" do
121
+ device = Lumberjack::MongoDevice.new(:db => "test", :collection => "log")
122
+ device.buffer_size = 2
123
+ device.write(entry_1)
124
+ collection.count.should == 0
125
+ device.write(entry_2)
126
+ collection.count.should == 2
127
+ device.write(entry_3)
128
+ collection.count.should == 2
129
+ device.flush
130
+ collection.count.should == 3
131
+ end
132
+
133
+ it "should set the buffer size on initialize with options" do
134
+ device = Lumberjack::MongoDevice.new(:db => "test", :collection => "log", :buffer_size => 2)
135
+ device.buffer_size = 2
136
+ device.write(entry_1)
137
+ collection.count.should == 0
138
+ device.write(entry_2)
139
+ collection.count.should == 2
140
+ device.write(entry_3)
141
+ collection.count.should == 2
142
+ device.flush
143
+ collection.count.should == 3
144
+ end
145
+
146
+ it "should set the buffer size on initialize with a collection" do
147
+ device = Lumberjack::MongoDevice.new(collection, :buffer_size => 2)
148
+ device.buffer_size = 2
149
+ device.write(entry_1)
150
+ collection.count.should == 0
151
+ device.write(entry_2)
152
+ collection.count.should == 2
153
+ device.write(entry_3)
154
+ collection.count.should == 2
155
+ device.flush
156
+ collection.count.should == 3
157
+ end
158
+
159
+ it "should output to standard error if the buffer can't be written'" do
160
+ end
161
+ end
162
+
163
+ context "finding" do
164
+ let(:device){ Lumberjack::MongoDevice.new(:db => "test", :collection => "log") }
165
+
166
+ before :each do
167
+ device.write(entry_1)
168
+ device.write(entry_2)
169
+ device.write(entry_3)
170
+ device.flush
171
+ end
172
+
173
+ it "should find entries and yield them to a block" do
174
+ entries = []
175
+ device.find({:progname => "test"}, :sort => :time) do |entry|
176
+ entries << entry
177
+ end
178
+
179
+ entries.size.should == 2
180
+
181
+ entries.first.time.should == entry_1.time
182
+ entries.first.severity.should == entry_1.severity
183
+ entries.first.progname.should == entry_1.progname
184
+ entries.first.pid.should == entry_1.pid
185
+ entries.first.unit_of_work_id.should == entry_1.unit_of_work_id
186
+ entries.first.message.should == entry_1.message
187
+
188
+ entries.last.time.should == entry_3.time
189
+ entries.last.severity.should == entry_3.severity
190
+ entries.last.progname.should == entry_3.progname
191
+ entries.last.pid.should == entry_3.pid
192
+ entries.last.unit_of_work_id.should == entry_3.unit_of_work_id
193
+ entries.last.message.should == entry_3.message
194
+ end
195
+
196
+ it "should find entries and return them as an array" do
197
+ entries = device.find({:progname => "test"}, :sort => :time)
198
+
199
+ entries.size.should == 2
200
+
201
+ entries.first.time.should == entry_1.time
202
+ entries.first.severity.should == entry_1.severity
203
+ entries.first.progname.should == entry_1.progname
204
+ entries.first.pid.should == entry_1.pid
205
+ entries.first.unit_of_work_id.should == entry_1.unit_of_work_id
206
+ entries.first.message.should == entry_1.message
207
+
208
+ entries.last.time.should == entry_3.time
209
+ entries.last.severity.should == entry_3.severity
210
+ entries.last.progname.should == entry_3.progname
211
+ entries.last.pid.should == entry_3.pid
212
+ entries.last.unit_of_work_id.should == entry_3.unit_of_work_id
213
+ entries.last.message.should == entry_3.message
214
+ end
215
+
216
+ it "should find the last entries in the log" do
217
+ device.last.collect{|e| e.message}.should == [entry_3.message]
218
+ device.last(2).collect{|e| e.message}.should == [entry_2.message, entry_3.message]
219
+ end
220
+ end
221
+ end
@@ -0,0 +1,40 @@
1
+ require 'rubygems'
2
+ require 'fileutils'
3
+
4
+ if ENV["MONGO_VERSION"]
5
+ gem "mongo", ENV["MONGO_VERSION"]
6
+ else
7
+ gem "mongo"
8
+ end
9
+
10
+ MONGO_PATH = ENV["MONGO_PATH"] || File.dirname(`which mongod`.chomp)
11
+
12
+ require File.expand_path("../../lib/lumberjack_mongo_device.rb", __FILE__)
13
+
14
+ def tmp_dir
15
+ File.expand_path("../tmp", __FILE__)
16
+ end
17
+
18
+ def start_mongo
19
+ FileUtils.rm_r(tmp_dir) if File.exist?(tmp_dir)
20
+ FileUtils.mkdir_p(File.join(tmp_dir, "db"))
21
+ `'#{MONGO_PATH}/mongod' --logpath '#{tmp_dir}/mongo.log' --pidfilepath '#{tmp_dir}/mongo.pid' --dbpath '#{tmp_dir}/db' --nohttpinterface --fork`
22
+
23
+ # Ensure server is accepting connections
24
+ stop_time = Time.now + 10
25
+ loop do
26
+ raise "Mongo server failed to start up in 10 seconds" if Time.now >= stop_time
27
+ begin
28
+ connection = Mongo::Connection.new
29
+ connection.close
30
+ break
31
+ rescue Mongo::ConnectionFailure
32
+ sleep(0.1)
33
+ end
34
+ end
35
+ end
36
+
37
+ def stop_mongo
38
+ pid = File.read("#{tmp_dir}/mongo.pid").chomp
39
+ `kill -15 #{pid}`
40
+ end
File without changes
Binary file
Binary file
Binary file
@@ -0,0 +1,253 @@
1
+ Wed Feb 9 12:38:46 MongoDB starting : pid=62193 port=27017 dbpath=/Users/bdurand/dev/projects/lumberjack_mongo_device/spec/tmp/db 64-bit
2
+ Wed Feb 9 12:38:46 db version v1.6.5, pdfile version 4.5
3
+ Wed Feb 9 12:38:46 git version: 0eb017e9b2828155a67c5612183337b89e12e291
4
+ Wed Feb 9 12:38:46 sys info: Darwin erh2.10gen.cc 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_40
5
+ Wed Feb 9 12:38:46 [initandlisten] waiting for connections on port 27017
6
+ Wed Feb 9 12:38:46 [initandlisten] connection accepted from 127.0.0.1:62975 #1
7
+ Wed Feb 9 12:38:46 [conn1] end connection 127.0.0.1:62975
8
+ Wed Feb 9 12:38:46 [initandlisten] connection accepted from 127.0.0.1:62978 #2
9
+ Wed Feb 9 12:38:46 [conn2] end connection 127.0.0.1:62978
10
+ Wed Feb 9 12:38:46 [initandlisten] connection accepted from 127.0.0.1:62981 #3
11
+ Wed Feb 9 12:38:46 [conn3] end connection 127.0.0.1:62981
12
+ Wed Feb 9 12:38:46 [initandlisten] connection accepted from 127.0.0.1:62984 #4
13
+ Wed Feb 9 12:38:46 allocating new datafile /Users/bdurand/dev/projects/lumberjack_mongo_device/spec/tmp/db/test.ns, filling with zeroes...
14
+ Wed Feb 9 12:38:46 done allocating datafile /Users/bdurand/dev/projects/lumberjack_mongo_device/spec/tmp/db/test.ns, size: 16MB, took 0.035 secs
15
+ Wed Feb 9 12:38:47 allocating new datafile /Users/bdurand/dev/projects/lumberjack_mongo_device/spec/tmp/db/test.0, filling with zeroes...
16
+ Wed Feb 9 12:38:47 done allocating datafile /Users/bdurand/dev/projects/lumberjack_mongo_device/spec/tmp/db/test.0, size: 64MB, took 0.361 secs
17
+ Wed Feb 9 12:38:50 allocating new datafile /Users/bdurand/dev/projects/lumberjack_mongo_device/spec/tmp/db/test.1, filling with zeroes...
18
+ Wed Feb 9 12:38:50 [conn4] building new index on { _id: 1 } for test.log
19
+ Wed Feb 9 12:38:50 [conn4] done for 0 records 0.022secs
20
+ Wed Feb 9 12:38:50 [conn4] insert test.log 3795ms
21
+ Wed Feb 9 12:38:50 [conn4] CMD: drop test.log
22
+ Wed Feb 9 12:38:50 [conn4] end connection 127.0.0.1:62984
23
+ Wed Feb 9 12:38:50 [initandlisten] connection accepted from 127.0.0.1:62987 #5
24
+ Wed Feb 9 12:38:50 [conn5] end connection 127.0.0.1:62987
25
+ Wed Feb 9 12:38:50 [initandlisten] connection accepted from 127.0.0.1:62990 #6
26
+ Wed Feb 9 12:38:50 [conn6] building new index on { _id: 1 } for test.log
27
+ Wed Feb 9 12:38:50 [conn6] done for 0 records 0secs
28
+ Wed Feb 9 12:38:50 [conn6] info: creating collection test.log on add index
29
+ building new index on { time: 1 } for test.log
30
+ Wed Feb 9 12:38:50 [conn6] done for 0 records 0secs
31
+ Wed Feb 9 12:38:50 [conn6] building new index on { unit_of_work_id: 1 } for test.log
32
+ Wed Feb 9 12:38:50 [conn6] done for 0 records 0.001secs
33
+ Wed Feb 9 12:38:50 [conn6] CMD: drop test.log
34
+ Wed Feb 9 12:38:50 [conn6] end connection 127.0.0.1:62990
35
+ Wed Feb 9 12:38:50 [initandlisten] connection accepted from 127.0.0.1:62993 #7
36
+ Wed Feb 9 12:38:50 [conn7] end connection 127.0.0.1:62993
37
+ Wed Feb 9 12:38:50 [initandlisten] connection accepted from 127.0.0.1:62996 #8
38
+ Wed Feb 9 12:38:50 [conn8] building new index on { _id: 1 } for test.log
39
+ Wed Feb 9 12:38:50 [conn8] done for 0 records 0secs
40
+ Wed Feb 9 12:38:50 [conn8] building new index on { time: 1 } for test.log
41
+ Wed Feb 9 12:38:50 [conn8] done for 0 records 0secs
42
+ Wed Feb 9 12:38:50 [conn8] building new index on { unit_of_work_id: 1 } for test.log
43
+ Wed Feb 9 12:38:50 [conn8] done for 0 records 0secs
44
+ Wed Feb 9 12:38:50 [conn8] CMD: drop test.log
45
+ Wed Feb 9 12:38:50 [conn8] end connection 127.0.0.1:62996
46
+ Wed Feb 9 12:38:50 [initandlisten] connection accepted from 127.0.0.1:62999 #9
47
+ Wed Feb 9 12:38:50 [conn9] end connection 127.0.0.1:62999
48
+ Wed Feb 9 12:38:50 [initandlisten] connection accepted from 127.0.0.1:63002 #10
49
+ Wed Feb 9 12:38:50 [initandlisten] connection accepted from 127.0.0.1:63005 #11
50
+ Wed Feb 9 12:38:50 [conn11] end connection 127.0.0.1:63005
51
+ Wed Feb 9 12:38:50 [initandlisten] connection accepted from 127.0.0.1:63008 #12
52
+ Wed Feb 9 12:38:50 [conn12] building new index on { _id: 1 } for test.log
53
+ Wed Feb 9 12:38:50 [conn12] done for 0 records 0secs
54
+ Wed Feb 9 12:38:50 [conn12] building new index on { time: 1 } for test.log
55
+ Wed Feb 9 12:38:50 [conn12] done for 0 records 0secs
56
+ Wed Feb 9 12:38:50 [conn12] building new index on { unit_of_work_id: 1 } for test.log
57
+ Wed Feb 9 12:38:50 [conn12] done for 0 records 0secs
58
+ Wed Feb 9 12:38:50 done allocating datafile /Users/bdurand/dev/projects/lumberjack_mongo_device/spec/tmp/db/test.1, size: 128MB, took 0.108 secs
59
+ Wed Feb 9 12:38:50 [conn10] CMD: drop test.log
60
+ Wed Feb 9 12:38:50 [conn10] end connection 127.0.0.1:63002
61
+ Wed Feb 9 12:38:50 [initandlisten] connection accepted from 127.0.0.1:63011 #13
62
+ Wed Feb 9 12:38:50 [conn13] end connection 127.0.0.1:63011
63
+ Wed Feb 9 12:38:50 [initandlisten] connection accepted from 127.0.0.1:63014 #14
64
+ Wed Feb 9 12:38:50 [initandlisten] connection accepted from 127.0.0.1:63017 #15
65
+ Wed Feb 9 12:38:50 [conn15] end connection 127.0.0.1:63017
66
+ Wed Feb 9 12:38:50 [initandlisten] connection accepted from 127.0.0.1:63020 #16
67
+ Wed Feb 9 12:38:51 [conn16] building new index on { _id: 1 } for test.log
68
+ Wed Feb 9 12:38:51 [conn16] done for 0 records 0secs
69
+ Wed Feb 9 12:38:51 [conn16] building new index on { time: 1 } for test.log
70
+ Wed Feb 9 12:38:51 [conn16] done for 0 records 0secs
71
+ Wed Feb 9 12:38:51 [conn16] building new index on { unit_of_work_id: 1 } for test.log
72
+ Wed Feb 9 12:38:51 [conn16] done for 0 records 0secs
73
+ Wed Feb 9 12:38:51 [conn14] CMD: drop test.log
74
+ Wed Feb 9 12:38:51 [conn14] end connection 127.0.0.1:63014
75
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63023 #17
76
+ Wed Feb 9 12:38:51 [conn17] end connection 127.0.0.1:63023
77
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63026 #18
78
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63029 #19
79
+ Wed Feb 9 12:38:51 [conn19] end connection 127.0.0.1:63029
80
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63032 #20
81
+ Wed Feb 9 12:38:51 [conn20] building new index on { _id: 1 } for test.log
82
+ Wed Feb 9 12:38:51 [conn20] done for 0 records 0secs
83
+ Wed Feb 9 12:38:51 [conn20] building new index on { time: 1 } for test.log
84
+ Wed Feb 9 12:38:51 [conn20] done for 0 records 0secs
85
+ Wed Feb 9 12:38:51 [conn20] building new index on { unit_of_work_id: 1 } for test.log
86
+ Wed Feb 9 12:38:51 [conn20] done for 0 records 0secs
87
+ Wed Feb 9 12:38:51 [conn18] CMD: drop test.log
88
+ Wed Feb 9 12:38:51 [conn18] end connection 127.0.0.1:63026
89
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63035 #21
90
+ Wed Feb 9 12:38:51 [conn21] end connection 127.0.0.1:63035
91
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63038 #22
92
+ Wed Feb 9 12:38:51 [conn22] building new index on { _id: 1 } for test.log
93
+ Wed Feb 9 12:38:51 [conn22] done for 0 records 0secs
94
+ Wed Feb 9 12:38:51 [conn22] info: creating collection test.log on add index
95
+ building new index on { pid: 1 } for test.log
96
+ Wed Feb 9 12:38:51 [conn22] done for 0 records 0secs
97
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63041 #23
98
+ Wed Feb 9 12:38:51 [conn23] end connection 127.0.0.1:63041
99
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63044 #24
100
+ Wed Feb 9 12:38:51 [conn22] CMD: drop test.log
101
+ Wed Feb 9 12:38:51 [conn22] end connection 127.0.0.1:63038
102
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63047 #25
103
+ Wed Feb 9 12:38:51 [conn25] end connection 127.0.0.1:63047
104
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63050 #26
105
+ Wed Feb 9 12:38:51 [conn26] building new index on { _id: 1 } for test.log
106
+ Wed Feb 9 12:38:51 [conn26] done for 0 records 0secs
107
+ Wed Feb 9 12:38:51 [conn26] building new index on { time: 1 } for test.log
108
+ Wed Feb 9 12:38:51 [conn26] done for 0 records 0secs
109
+ Wed Feb 9 12:38:51 [conn26] building new index on { unit_of_work_id: 1 } for test.log
110
+ Wed Feb 9 12:38:51 [conn26] done for 0 records 0secs
111
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63053 #27
112
+ Wed Feb 9 12:38:51 [conn27] end connection 127.0.0.1:63053
113
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63056 #28
114
+ Wed Feb 9 12:38:51 [conn28] query test.log ntoreturn:1 reslen:168 nscanned:1 { message: "message 1" } nreturned:1 131ms
115
+ Wed Feb 9 12:38:51 [conn28] CMD: drop test.log
116
+ Wed Feb 9 12:38:51 [conn28] end connection 127.0.0.1:63056
117
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63059 #29
118
+ Wed Feb 9 12:38:51 [conn29] end connection 127.0.0.1:63059
119
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63062 #30
120
+ Wed Feb 9 12:38:51 [conn30] building new index on { _id: 1 } for test.log
121
+ Wed Feb 9 12:38:51 [conn30] done for 0 records 0secs
122
+ Wed Feb 9 12:38:51 [conn30] building new index on { time: 1 } for test.log
123
+ Wed Feb 9 12:38:51 [conn30] done for 0 records 0secs
124
+ Wed Feb 9 12:38:51 [conn30] building new index on { unit_of_work_id: 1 } for test.log
125
+ Wed Feb 9 12:38:51 [conn30] done for 0 records 0secs
126
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63065 #31
127
+ Wed Feb 9 12:38:51 [conn31] end connection 127.0.0.1:63065
128
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63068 #32
129
+ Wed Feb 9 12:38:51 [conn32] CMD: drop test.log
130
+ Wed Feb 9 12:38:51 [conn32] end connection 127.0.0.1:63068
131
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63071 #33
132
+ Wed Feb 9 12:38:51 [conn33] end connection 127.0.0.1:63071
133
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63074 #34
134
+ Wed Feb 9 12:38:51 [conn34] building new index on { _id: 1 } for test.log
135
+ Wed Feb 9 12:38:51 [conn34] done for 0 records 0secs
136
+ Wed Feb 9 12:38:51 [conn34] building new index on { time: 1 } for test.log
137
+ Wed Feb 9 12:38:51 [conn34] done for 0 records 0secs
138
+ Wed Feb 9 12:38:51 [conn34] building new index on { unit_of_work_id: 1 } for test.log
139
+ Wed Feb 9 12:38:51 [conn34] done for 0 records 0secs
140
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63077 #35
141
+ Wed Feb 9 12:38:51 [conn35] end connection 127.0.0.1:63077
142
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63080 #36
143
+ Wed Feb 9 12:38:51 [conn36] CMD: drop test.log
144
+ Wed Feb 9 12:38:51 [conn36] end connection 127.0.0.1:63080
145
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63083 #37
146
+ Wed Feb 9 12:38:51 [conn37] end connection 127.0.0.1:63083
147
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63086 #38
148
+ Wed Feb 9 12:38:51 [conn38] building new index on { _id: 1 } for test.log
149
+ Wed Feb 9 12:38:51 [conn38] done for 0 records 0secs
150
+ Wed Feb 9 12:38:51 [conn38] building new index on { time: 1 } for test.log
151
+ Wed Feb 9 12:38:51 [conn38] done for 0 records 0secs
152
+ Wed Feb 9 12:38:51 [conn38] building new index on { unit_of_work_id: 1 } for test.log
153
+ Wed Feb 9 12:38:51 [conn38] done for 0 records 0secs
154
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63089 #39
155
+ Wed Feb 9 12:38:51 [conn39] end connection 127.0.0.1:63089
156
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63092 #40
157
+ Wed Feb 9 12:38:51 [conn40] CMD: drop test.log
158
+ Wed Feb 9 12:38:51 [conn40] end connection 127.0.0.1:63092
159
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63095 #41
160
+ Wed Feb 9 12:38:51 [conn41] end connection 127.0.0.1:63095
161
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63098 #42
162
+ Wed Feb 9 12:38:51 [conn42] building new index on { _id: 1 } for test.log
163
+ Wed Feb 9 12:38:51 [conn42] done for 0 records 0secs
164
+ Wed Feb 9 12:38:51 [conn42] building new index on { time: 1 } for test.log
165
+ Wed Feb 9 12:38:51 [conn42] done for 0 records 0secs
166
+ Wed Feb 9 12:38:51 [conn42] building new index on { unit_of_work_id: 1 } for test.log
167
+ Wed Feb 9 12:38:51 [conn42] done for 0 records 0secs
168
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63101 #43
169
+ Wed Feb 9 12:38:51 [conn43] end connection 127.0.0.1:63101
170
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63104 #44
171
+ Wed Feb 9 12:38:51 [conn44] CMD: drop test.log
172
+ Wed Feb 9 12:38:51 [conn44] end connection 127.0.0.1:63104
173
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63107 #45
174
+ Wed Feb 9 12:38:51 [conn45] end connection 127.0.0.1:63107
175
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63110 #46
176
+ Wed Feb 9 12:38:51 [conn46] building new index on { _id: 1 } for test.log
177
+ Wed Feb 9 12:38:51 [conn46] done for 0 records 0secs
178
+ Wed Feb 9 12:38:51 [conn46] CMD: drop test.log
179
+ Wed Feb 9 12:38:51 [conn46] end connection 127.0.0.1:63110
180
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63113 #47
181
+ Wed Feb 9 12:38:51 [conn47] end connection 127.0.0.1:63113
182
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63116 #48
183
+ Wed Feb 9 12:38:51 [conn48] end connection 127.0.0.1:63116
184
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63119 #49
185
+ Wed Feb 9 12:38:51 [conn49] end connection 127.0.0.1:63119
186
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63122 #50
187
+ Wed Feb 9 12:38:51 [conn50] building new index on { _id: 1 } for test.log
188
+ Wed Feb 9 12:38:51 [conn50] done for 0 records 0secs
189
+ Wed Feb 9 12:38:51 [conn50] building new index on { time: 1 } for test.log
190
+ Wed Feb 9 12:38:51 [conn50] done for 0 records 0secs
191
+ Wed Feb 9 12:38:51 [conn50] building new index on { unit_of_work_id: 1 } for test.log
192
+ Wed Feb 9 12:38:51 [conn50] done for 0 records 0secs
193
+ Wed Feb 9 12:38:51 [conn50] query test.log reslen:301 nscanned:3 { $query: { progname: "test" }, $orderby: { time: 1 } } nreturned:2 173ms
194
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63125 #51
195
+ Wed Feb 9 12:38:51 [conn51] end connection 127.0.0.1:63125
196
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63128 #52
197
+ Wed Feb 9 12:38:51 [conn52] CMD: drop test.log
198
+ Wed Feb 9 12:38:51 [conn52] end connection 127.0.0.1:63128
199
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63131 #53
200
+ Wed Feb 9 12:38:51 [conn53] end connection 127.0.0.1:63131
201
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63134 #54
202
+ Wed Feb 9 12:38:51 [conn54] building new index on { _id: 1 } for test.log
203
+ Wed Feb 9 12:38:51 [conn54] done for 0 records 0secs
204
+ Wed Feb 9 12:38:51 [conn54] building new index on { time: 1 } for test.log
205
+ Wed Feb 9 12:38:51 [conn54] done for 0 records 0secs
206
+ Wed Feb 9 12:38:51 [conn54] building new index on { unit_of_work_id: 1 } for test.log
207
+ Wed Feb 9 12:38:51 [conn54] done for 0 records 0secs
208
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63137 #55
209
+ Wed Feb 9 12:38:51 [conn55] end connection 127.0.0.1:63137
210
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63140 #56
211
+ Wed Feb 9 12:38:51 [conn56] CMD: drop test.log
212
+ Wed Feb 9 12:38:51 [conn56] end connection 127.0.0.1:63140
213
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63143 #57
214
+ Wed Feb 9 12:38:51 [conn57] end connection 127.0.0.1:63143
215
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63146 #58
216
+ Wed Feb 9 12:38:51 [conn58] building new index on { _id: 1 } for test.log
217
+ Wed Feb 9 12:38:51 [conn58] done for 0 records 0secs
218
+ Wed Feb 9 12:38:51 [conn58] building new index on { time: 1 } for test.log
219
+ Wed Feb 9 12:38:51 [conn58] done for 0 records 0secs
220
+ Wed Feb 9 12:38:51 [conn58] building new index on { unit_of_work_id: 1 } for test.log
221
+ Wed Feb 9 12:38:51 [conn58] done for 0 records 0secs
222
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63149 #59
223
+ Wed Feb 9 12:38:51 [conn59] end connection 127.0.0.1:63149
224
+ Wed Feb 9 12:38:51 [initandlisten] connection accepted from 127.0.0.1:63152 #60
225
+ Wed Feb 9 12:38:51 [conn60] CMD: drop test.log
226
+ Wed Feb 9 12:38:51 [conn60] end connection 127.0.0.1:63152
227
+ Wed Feb 9 12:38:51 got kill or ctrl c or hup signal 15 (Terminated), will terminate after current cmd ends
228
+ Wed Feb 9 12:38:51 [interruptThread] now exiting
229
+ Wed Feb 9 12:38:51 dbexit:
230
+
231
+ Wed Feb 9 12:38:51 [interruptThread] shutdown: going to close listening sockets...
232
+ Wed Feb 9 12:38:51 [interruptThread] closing listening socket: 4
233
+ Wed Feb 9 12:38:51 [interruptThread] closing listening socket: 5
234
+ Wed Feb 9 12:38:51 [interruptThread] shutdown: going to flush oplog...
235
+ Wed Feb 9 12:38:51 [interruptThread] shutdown: going to close sockets...
236
+ Wed Feb 9 12:38:51 [interruptThread] shutdown: waiting for fs preallocator...
237
+ Wed Feb 9 12:38:51 [conn50] end connection 127.0.0.1:63122
238
+ Wed Feb 9 12:38:51 [conn42] end connection 127.0.0.1:63098
239
+ Wed Feb 9 12:38:51 [conn24] end connection 127.0.0.1:63044
240
+ Wed Feb 9 12:38:51 [conn12] end connection 127.0.0.1:63008
241
+ Wed Feb 9 12:38:51 [conn20] end connection 127.0.0.1:63032
242
+ Wed Feb 9 12:38:51 [conn26] end connection 127.0.0.1:63050
243
+ Wed Feb 9 12:38:51 [conn16] end connection 127.0.0.1:63020
244
+ Wed Feb 9 12:38:51 [conn30] end connection 127.0.0.1:63062
245
+ Wed Feb 9 12:38:51 [conn34] end connection 127.0.0.1:63074
246
+ Wed Feb 9 12:38:51 [conn54] end connection 127.0.0.1:63134
247
+ Wed Feb 9 12:38:51 [conn38] end connection 127.0.0.1:63086
248
+ Wed Feb 9 12:38:51 [conn58] end connection 127.0.0.1:63146
249
+ Wed Feb 9 12:38:53 [interruptThread] shutdown: closing all files...
250
+ Wed Feb 9 12:38:53 closeAllFiles() finished
251
+
252
+ Wed Feb 9 12:38:53 [interruptThread] shutdown: removing fs lock...
253
+ Wed Feb 9 12:38:53 dbexit: really exiting now
File without changes
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lumberjack_mongo_device
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Brian Durand
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-02-11 00:00:00 -06:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: mongo
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 25
30
+ segments:
31
+ - 1
32
+ - 1
33
+ - 5
34
+ version: 1.1.5
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: lumberjack
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 15
46
+ segments:
47
+ - 1
48
+ - 0
49
+ version: "1.0"
50
+ type: :runtime
51
+ version_requirements: *id002
52
+ description: A logging device for the lumberjack gem that writes log entries to a MongoDB collection.
53
+ email:
54
+ - bdurand@embellishedvisions.com
55
+ executables: []
56
+
57
+ extensions: []
58
+
59
+ extra_rdoc_files:
60
+ - README.rdoc
61
+ files:
62
+ - README.rdoc
63
+ - VERSION
64
+ - Rakefile
65
+ - MIT_LICENSE
66
+ - lib/lumberjack_mongo_device.rb
67
+ - spec/lumberjack_mongo_device_spec.rb
68
+ - spec/spec_helper.rb
69
+ - spec/tmp/db/mongod.lock
70
+ - spec/tmp/db/test.0
71
+ - spec/tmp/db/test.1
72
+ - spec/tmp/db/test.ns
73
+ - spec/tmp/mongo.log
74
+ - spec/tmp/mongo.pid
75
+ has_rdoc: true
76
+ homepage: http://github.com/bdurand/lumberjack_mongo_device
77
+ licenses: []
78
+
79
+ post_install_message:
80
+ rdoc_options:
81
+ - --charset=UTF-8
82
+ - --main
83
+ - README.rdoc
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ hash: 3
92
+ segments:
93
+ - 0
94
+ version: "0"
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
103
+ version: "0"
104
+ requirements: []
105
+
106
+ rubyforge_project:
107
+ rubygems_version: 1.5.0
108
+ signing_key:
109
+ specification_version: 3
110
+ summary: A logging device for the lumberjack gem that writes log entries to a MongoDB collection.
111
+ test_files: []
112
+