logutils 0.2.0 → 0.3.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.
File without changes
@@ -3,8 +3,10 @@ Manifest.txt
3
3
  README.md
4
4
  Rakefile
5
5
  lib/logutils.rb
6
+ lib/logutils/db.rb
6
7
  lib/logutils/db/deleter.rb
7
8
  lib/logutils/db/models.rb
8
9
  lib/logutils/db/schema.rb
9
10
  lib/logutils/logger.rb
10
11
  lib/logutils/version.rb
12
+ test/test.rb
data/README.md CHANGED
@@ -20,6 +20,64 @@ use methods e.g.
20
20
  logger.error "another msg"
21
21
  logger.fatal "another msg"
22
22
 
23
+ To get a Logger use
24
+
25
+ logger = LogUtils[ self ]
26
+
27
+ or
28
+
29
+ logger = LogUtils[ 'SportDb::Reader' ]
30
+
31
+ ### Log to the database using `LogDb`
32
+
33
+ NB: To use the `LogDb` machinery require the module, that is, issue:
34
+
35
+ require 'logutils/db'
36
+
37
+ To create the database tables use:
38
+
39
+ LogDb.create
40
+
41
+ To start logging to the database (established connection required) use:
42
+
43
+ LogDb.setup
44
+
45
+ To clean out all log records from the database use:
46
+
47
+ LogDb.delete!
48
+
49
+
50
+ ### All together now
51
+
52
+
53
+ require 'logutils'
54
+
55
+ logger = LogUtils[ 'Test' ]
56
+ logger.info 'hello LogUtils'
57
+
58
+ require 'logutils/db'
59
+
60
+ LOG_DB_PATH = './log.db'
61
+
62
+ LOG_DB_CONFIG = {
63
+ :adapter => 'sqlite3',
64
+ :database => LOG_DB_PATH
65
+ }
66
+
67
+ require 'active_record'
68
+
69
+ pp LOG_DB_CONFIG
70
+ ActiveRecord::Base.establish_connection( LOG_DB_CONFIG )
71
+
72
+ LogDb.create
73
+ LogDb.setup
74
+
75
+ logger.info 'hola LogUtils'
76
+ logger.warn 'servus LogUtils'
77
+
78
+
79
+ That's it.
80
+
23
81
 
24
82
  ## Alternatives
25
83
 
@@ -5,6 +5,7 @@
5
5
  #
6
6
  # 1.9.x: ruby -Ilib lib/logutils.rb
7
7
 
8
+
8
9
  # core and stlibs
9
10
 
10
11
  require 'yaml'
@@ -13,32 +14,16 @@ require 'logger'
13
14
  require 'fileutils'
14
15
 
15
16
 
16
- # rubygems / 3rd party libs
17
-
18
- require 'active_record' ## todo: add sqlite3? etc.
19
-
20
-
21
17
  # our own code
22
18
 
23
19
  require 'logutils/version'
24
20
 
25
- require 'logutils/db/models'
26
- require 'logutils/db/schema'
27
- require 'logutils/db/deleter'
28
-
29
21
  require 'logutils/logger'
30
22
 
31
23
 
32
24
  module LogUtils
33
25
 
34
- end # module LogUtils
35
-
36
-
37
- module LogDB
38
-
39
- def self.banner
40
- "logdb #{LogUtils::VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
41
- end
26
+ =begin # not needed for now; keep it for later
42
27
 
43
28
  def self.root
44
29
  "#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
@@ -48,23 +33,16 @@ module LogDB
48
33
  "#{root}/config"
49
34
  end
50
35
 
51
- def self.create
52
- CreateDB.up
53
- end
54
-
55
- # delete ALL records (use with care!)
56
- def self.delete!
57
- puts '*** deleting log table records/data...'
58
- Deleter.new.run
59
- end # method delete!
36
+ =end
60
37
 
38
+ ###########
39
+ # use it like:
40
+ # logger = LogUtils[ self ] or
41
+ # logger = LogUtils[ 'SportDb::Reader' ] etc.
61
42
 
62
- def self.stats
63
- # to be done
43
+ def self.[]( class_or_name )
44
+ # for now always return single instance, that is, use standard/default logger for all
45
+ STDLOGGER
64
46
  end
65
47
 
66
-
67
- end # module LogDB
68
-
69
- ## say hello
70
- puts LogDB.banner
48
+ end # module LogUtils
@@ -0,0 +1,74 @@
1
+
2
+ #########################################
3
+ # NB: only load on demand
4
+ # we do NOT want to pull in activerecord gem/dep for simple scripts
5
+
6
+ # rubygems / 3rd party libs
7
+
8
+ require 'active_record' ## todo: add sqlite3? etc.
9
+
10
+ # our own code
11
+
12
+ require 'logutils/db/models'
13
+ require 'logutils/db/schema'
14
+ require 'logutils/db/deleter'
15
+
16
+
17
+ module LogDb
18
+
19
+ VERSION = LogUtils::VERSION
20
+
21
+ def self.banner
22
+ "logdb #{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
23
+ end
24
+
25
+ end
26
+
27
+ ###########################################3
28
+ ## fix: remove old alias for LogDb
29
+
30
+ LogDB = LogDb
31
+
32
+ ###########################
33
+
34
+ module LogDb
35
+
36
+ class DbListener
37
+ include LogDB::Models
38
+
39
+ def write( ev )
40
+ if( ev.fatal? || ev.error? || ev.warn? )
41
+ ## create log entry in db table (logs)
42
+ Log.create!( level: ev.level, msg: ev.msg, pid: ev.pid, tid: ev.tid, ts: ev.ts )
43
+ end
44
+ end # method write
45
+ end # class DbListener
46
+
47
+ STDDBLISTENER = DbListener.new # default/standard db listener
48
+
49
+ def self.create
50
+ CreateDb.up
51
+ end
52
+
53
+ # delete ALL records (use with care!)
54
+ def self.delete!
55
+ puts '*** deleting log table records/data...'
56
+ Deleter.new.run
57
+ end # method delete!
58
+
59
+
60
+ def self.stats
61
+ # to be done
62
+ end
63
+
64
+ def self.setup # check: use different name? e.g. configure or connect ?? why or why not?
65
+ # turn on logging to db - assumes active connection
66
+ LogUtils::STDLOGGER.listeners << STDDBLISTENER
67
+ end
68
+
69
+
70
+ end # module LogDb
71
+
72
+
73
+ # say hello
74
+ puts LogDb.banner
@@ -1,10 +1,10 @@
1
1
 
2
- module LogDB
2
+ module LogDb
3
3
 
4
- class Deleter
5
- include LogDB::Models
4
+ class Deleter
5
+ include LogDb::Models
6
6
 
7
- def run( args=[] )
7
+ def run
8
8
  # for now delete all tables
9
9
 
10
10
  Log.delete_all
@@ -12,4 +12,4 @@ module LogDB
12
12
 
13
13
  end # class Deleter
14
14
 
15
- end # module LogDB
15
+ end # module LogDb
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
- module LogDB
3
+ module LogDb
4
4
  module Models
5
5
 
6
6
 
@@ -10,4 +10,4 @@ end # class Log
10
10
 
11
11
 
12
12
  end # module Models
13
- end # module LogDB
13
+ end # module LogDb
@@ -1,7 +1,7 @@
1
1
 
2
- module LogDB
2
+ module LogDb
3
3
 
4
- class CreateDB ## fix/todo: change to ActiveRecord::Migration why? why not?
4
+ class CreateDb ## fix/todo: change to ActiveRecord::Migration why? why not?
5
5
 
6
6
  def self.up
7
7
 
@@ -39,6 +39,6 @@ end
39
39
 
40
40
  end # method up
41
41
 
42
- end # class CreateDB
42
+ end # class CreateDb
43
43
 
44
- end # module LogDB
44
+ end # module LogDb
@@ -8,8 +8,11 @@ module LogUtils
8
8
  ERROR = 'error'
9
9
  FATAL = 'fatal'
10
10
  end
11
-
11
+
12
+
12
13
  class Event
14
+ include Level
15
+
13
16
  def initialize( level, msg )
14
17
  @level = level
15
18
  @msg = msg
@@ -27,17 +30,50 @@ module LogUtils
27
30
  attr_reader :ts # timestamp
28
31
 
29
32
 
30
- def to_s()
31
- "[#{level}-#{pid}.#{tid}] #{msg}"
33
+ def fatal?
34
+ @level == FATAL
35
+ end
36
+
37
+ def error?
38
+ @level == ERROR
39
+ end
40
+
41
+ def warn?
42
+ @level == WARN
43
+ end
44
+
45
+
46
+ def to_s
47
+ # "[#{level}-#{pid}.#{tid}] #{msg}"
48
+ "[#{level}] #{msg}"
32
49
  end
33
50
 
34
51
  end # class Event
52
+
53
+
54
+ class ConsoleListener
55
+ def write( ev )
56
+ if( ev.fatal? || ev.error? || ev.warn? )
57
+ STDERR.puts ev.to_s
58
+ else
59
+ STDOUT.puts ev.to_s
60
+ end
61
+ end
62
+ end # class ConsoleListener
35
63
 
36
-
64
+ STDLISTENER = ConsoleListener.new # default/standard console listener
65
+
66
+
37
67
  class Logger
38
- include LogDB::Models
39
68
  include Level
40
69
 
70
+ def initialize
71
+ @listeners = []
72
+ @listeners << STDLISTENER # by default log to console
73
+ end
74
+
75
+ attr_reader :listeners
76
+
41
77
  def debug( msg )
42
78
  write( Event.new( DEBUG, msg ) )
43
79
  end
@@ -61,14 +97,11 @@ module LogUtils
61
97
  private
62
98
 
63
99
  def write( ev )
64
- puts ev.to_s
65
-
66
- if( [FATAL, ERROR, WARN].include?( ev.level ) )
67
- ## create log entry in db table (logs)
68
- Log.create!( level: ev.level, msg: ev.msg, pid: ev.pid, tid: ev.tid, ts: ev.ts )
69
- end
100
+ @listeners.each { |l| l.write( ev ) }
70
101
  end
71
102
 
72
103
  end # class Logger
73
104
 
105
+ STDLOGGER = Logger.new # single instance - default/standard logger
106
+
74
107
  end # module LogUtils
@@ -1,5 +1,5 @@
1
1
 
2
2
  module LogUtils
3
- VERSION = '0.2.0'
3
+ VERSION = '0.3.0'
4
4
  end # module LogUtils
5
5
 
@@ -0,0 +1,33 @@
1
+
2
+ puts "before require 'logutils'"
3
+ require 'logutils'
4
+
5
+ puts "LogUtils::VERSION #{LogUtils::VERSION}"
6
+
7
+ logger = LogUtils[ 'Test' ]
8
+ logger.info 'hello LogUtils'
9
+
10
+ puts "before require 'logutils/db'"
11
+ require 'logutils/db'
12
+
13
+
14
+ LOG_DB_PATH = './log.db'
15
+
16
+ LOG_DB_CONFIG = {
17
+ :adapter => 'sqlite3',
18
+ :database => LOG_DB_PATH
19
+ }
20
+
21
+ require 'active_record'
22
+
23
+ pp LOG_DB_CONFIG
24
+ ActiveRecord::Base.establish_connection( LOG_DB_CONFIG )
25
+
26
+
27
+ LogDb.create
28
+
29
+ LogDb.setup
30
+
31
+ logger.info 'hola LogUtils'
32
+ logger.warn 'servus LogUtils'
33
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logutils
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
8
+ - 3
9
9
  - 0
10
- version: 0.2.0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gerald Bauer
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-02-20 00:00:00 Z
18
+ date: 2013-02-21 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rdoc
@@ -61,11 +61,14 @@ files:
61
61
  - README.md
62
62
  - Rakefile
63
63
  - lib/logutils.rb
64
+ - lib/logutils/db.rb
64
65
  - lib/logutils/db/deleter.rb
65
66
  - lib/logutils/db/models.rb
66
67
  - lib/logutils/db/schema.rb
67
68
  - lib/logutils/logger.rb
68
69
  - lib/logutils/version.rb
70
+ - test/test.rb
71
+ - .gemtest
69
72
  homepage: https://github.com/geraldb/logutils
70
73
  licenses:
71
74
  - Public Domain