logutils 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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