ABCLogger 0.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6f2f96b6e895c677e8e1c4e100f7ba0aa4daa393
4
+ data.tar.gz: 3b66442c2014efd60780fe7f2782391ff44e5dac
5
+ SHA512:
6
+ metadata.gz: 0a8452e0aa27ea1d1a9b898cdfb884468a3095b3139768b2190e047da8c5aa311c522c4522dff8926da63471c99c14f4c9d4e3d945ad6346b595398f543a8107
7
+ data.tar.gz: 2b8455e3404d1413d6110e26968f7c40a9026a89b4c40d0799012e59f75f325a575258af2743c90f49e314b0f794b1ab538fd5ea481a22a2c10124352d5023ff
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
15
+ *.log
16
+ .idea
17
+ .idea/*
18
+ *.gem
19
+ test/ABCTesterZZZ.rb
data/ABCLogger.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ABCLogger/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ABCLogger"
8
+ spec.version = ABCVersion::VERSION
9
+ spec.authors = ["Keith"]
10
+ spec.email = ["keithk23@gmail.com"]
11
+ spec.summary = %q{Ruby class for logging to a logfile.}
12
+ spec.description = %q{Ruby class for logging to stdout, stderr, or a file.}
13
+ spec.homepage = ''
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ end
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ABCLogger.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Keith Kowalski
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,296 @@
1
+ # ABCLogger
2
+
3
+ ABCLogger logs messages to stdout, stderr, or a file.<br>
4
+ ABCSharedLogger is the singleton implementaion.<br>
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```
11
+ gem 'ABCLogger'
12
+ ```
13
+
14
+ And then execute:
15
+
16
+ $ bundle
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install ABCLogger
21
+
22
+ ## Usage
23
+
24
+ ### ABCLogger Examples
25
+ require 'ABCLogger'
26
+
27
+ #### Example of STDOUT logging
28
+
29
+ ##### Sample code
30
+ ```
31
+ logger = ABCLogger.new
32
+ logger.set_level(:debug)
33
+
34
+ logger.log(:debug, 'init', 'Test message')
35
+ logger.log(:error, 'Test message')
36
+ logger.log('post init', 'Next message')
37
+ logger.log('Msg only ARG Test message')
38
+
39
+ age = 42
40
+ logger.log_formatted(:warning, 'init','Value was: %d', age)
41
+ logger.log_formatted(:info, 'Value was: %d', age)
42
+ logger.log_formatted('not_init','Value was: %d', age)
43
+ logger.log_formatted('Value was: %d', age)
44
+
45
+ name = 'Gunny'
46
+ job = 'Developer'
47
+ logger.log_formatted_vars(:debug, 'next','name: %s, age: %d, job: %s', name, age, job)
48
+ ```
49
+
50
+ ##### Sample output
51
+
52
+ STDOUT<br>
53
+
54
+ ```
55
+ 09/15/2014|02:36:00PM|ABCTester.rb|DEBUG|init|Test message
56
+ 09/15/2014|02:36:00PM|ABCTester.rb|ERROR|init|Test message
57
+ 09/15/2014|02:36:00PM|ABCTester.rb|ERROR|post init|Next message
58
+ 09/15/2014|02:36:00PM|ABCTester.rb|ERROR|post init|Msg only ARG Test message
59
+ 09/15/2014|02:36:00PM|ABCTester.rb|WARNING|init|Value was: 42
60
+ 09/15/2014|02:36:00PM|ABCTester.rb|INFO|init|Value was: 42
61
+ 09/15/2014|02:36:00PM|ABCTester.rb|INFO|not_init|Value was: 42
62
+ 09/15/2014|02:36:00PM|ABCTester.rb|INFO|not_init|Value was: 42
63
+ 09/15/2014|02:36:00PM|ABCTester.rb|DEBUG|next|name: Gunny, age: 42, job: Developer
64
+ ```
65
+
66
+ #### Example of file logging
67
+
68
+ ##### Sample code #open
69
+ ```
70
+ logger = ABCLogger.new
71
+ logger.set_level(:debug)
72
+
73
+ logger.open('ABCTester.log')
74
+ logger.log(:warning, 'file', 'Test message')
75
+ logger.log(:fatal, 'Test message')
76
+ logger.log('Msg only ARGS Test message')
77
+ logger.log_exception(:unknown, Exception.new('File exception'))
78
+ logger.close
79
+ ```
80
+
81
+ ##### Sample output
82
+
83
+ File: ABCTester.log<br>
84
+
85
+ ```
86
+ 09/15/2014|06:45:00PM|ABCTester.rb|WARNING|file|Test message
87
+ 09/15/2014|06:45:00PM|ABCTester.rb|FATAL|file|Test message
88
+ 09/15/2014|06:45:00PM|ABCTester.rb|FATAL|file|Msg only ARGS Test message
89
+ 09/15/2014|06:45:00PM|ABCTester.rb|UNKNOWN|file|File exception
90
+ ```
91
+
92
+ ##### Sample code #open_with_date
93
+ ```
94
+ logger = ABCLogger.new
95
+ logger.set_level(:debug)
96
+
97
+ logger.open_with_date
98
+ logger.log(:warning, 'file', 'Test message' )
99
+ logger.log(:fatal, 'Test message' )
100
+ logger.log('Msg only ARGS Test message' )
101
+ logger.log_exception(:unknown, Exception.new('File exception'))
102
+ logger.close
103
+ ```
104
+
105
+ ##### Sample output
106
+
107
+ File: ABCLogger_20140916.log<br>
108
+
109
+ ```
110
+ 09/16/2014|02:57:35PM|ABCTester.rb|WARNING|file|Test message
111
+ 09/16/2014|02:57:35PM|ABCTester.rb|FATAL|file|Test message
112
+ 09/16/2014|02:57:35PM|ABCTester.rb|FATAL|file|Msg only ARGS Test message
113
+ 09/16/2014|02:57:35PM|ABCTester.rb|UNKNOWN|file|File exception
114
+ ```
115
+
116
+ #### Example of custom output
117
+
118
+ ##### Sample code
119
+ ```
120
+ logger = ABCLogger.new
121
+ logger.set_level(:debug)
122
+
123
+ logger.set_output(STDERR)
124
+ logger.log('Testing to STDERR')
125
+ logger.log(:info, 'Testing to STDERR')
126
+
127
+ logger.set_output(STDOUT)
128
+ logger.log('Testing to STDOUT')
129
+ logger.log(:warning, 'Testing to STDOUT')
130
+
131
+ file = File.open('testing.log', 'a+')
132
+ logger.set_output(file)
133
+ logger.log('Testing to file')
134
+ logger.log(:warning, 'Testing to file')
135
+ logger.set_output(STDOUT)
136
+ file.close
137
+ ```
138
+
139
+ ##### Sample output
140
+
141
+ STDERR<br>
142
+
143
+ ```
144
+ 09/16/2014|02:57:35PM|ABCTester.rb|DEBUG|next|Testing to STDERR
145
+ 09/16/2014|02:57:35PM|ABCTester.rb|INFO|next|Testing to STDERR
146
+ ```
147
+
148
+ STDOUT<br>
149
+
150
+ ```
151
+ 09/16/2014|02:57:35PM|ABCTester.rb|INFO|next|Testing to STDOUT
152
+ 09/16/2014|02:57:35PM|ABCTester.rb|WARNING|next|Testing to STDOUT
153
+ ```
154
+
155
+ File: testing.log<br>
156
+
157
+ ```
158
+ 09/16/2014|02:57:35PM|ABCTester.rb|WARNING|next|Testing to file
159
+ 09/16/2014|02:57:35PM|ABCTester.rb|WARNING|next|Testing to file
160
+ ```
161
+
162
+ ### ABCSharedLogger Examples
163
+ require 'ABCSharedLogger'
164
+
165
+ #### Example of STDOUT logging
166
+
167
+ ##### Sample code
168
+ ```
169
+ ABCSharedLogger.instance.set_program('ABCTester')
170
+ ABCSharedLogger.instance.set_level(:warning)
171
+ ABCSharedLogger.instance.log(:error, 'Testing singleton')
172
+ ABCSharedLogger.instance.log('Testing singleton again')
173
+
174
+ log = ABCSharedLogger.instance
175
+ log.log(:warning,'ReadData','New test 1')
176
+ log.log('New test 2')
177
+ log.log_formatted_vars(:fatal, 'ErrorHandler', 'RC = %d', errno)
178
+ ```
179
+
180
+ ##### Sample output
181
+
182
+ STDOUT<br>
183
+
184
+ ```
185
+ 09/16/2014|03:59:27PM|ABCTester|ERROR|Main|Testing singleton
186
+ 09/16/2014|03:59:27PM|ABCTester|ERROR|Main|Testing singleton again
187
+ 09/16/2014|03:59:27PM|ABCTester|WARNING|ReadData|New test 1
188
+ 09/16/2014|03:59:27PM|ABCTester|WARNING|ReadData|New test 2
189
+ 09/16/2014|03:59:27PM|ABCTester|FATAL|ErrorHandler|RC = 7
190
+
191
+ ```
192
+
193
+ #### Example of file logging
194
+
195
+ ##### Sample code #open
196
+ ```
197
+ flog = ABCSharedLogger.instance
198
+ flog.set_level(:debug)
199
+
200
+ flog.open('testing.log')
201
+ flog.log(:warning, 'Testing again.......')
202
+ flog.log('Again.....')
203
+ flog.log_exception(Exception.new ('Test exception'))
204
+ flog.log(:fatal, 'This is weird')
205
+ flog.close
206
+ ```
207
+
208
+ ##### Sample output
209
+
210
+ File: ABCTester.log<br>
211
+
212
+ ```
213
+ 09/16/2014|04:05:50PM|ABCTester|WARNING|ErrorHandler|Testing again.......
214
+ 09/16/2014|04:05:50PM|ABCTester|WARNING|ErrorHandler|Again.....
215
+ 09/16/2014|04:05:50PM|ABCTester|WARNING|ErrorHandler|Test exception
216
+ 09/16/2014|04:05:50PM|ABCTester|FATAL|ErrorHandler|This is weird
217
+ ```
218
+
219
+ ##### Sample code #open_with_date
220
+ ```
221
+ dlog = ABCSharedLogger.instance
222
+ dlog.set_program('AppZ')
223
+
224
+ dlog.open_with_date(nil, 'ABCTst', 'log')
225
+ dlog.log :info, 'Testing again.......'
226
+ dlog.log 'Again.....'
227
+ dlog.log_exception ( Exception.new ('Test exception'))
228
+ dlog.log(:fatal, 'This is weird')
229
+ dlog.close
230
+ ```
231
+
232
+ ##### Sample output
233
+
234
+ File: ABCTst_20140916.log<br>
235
+
236
+ ```
237
+ 09/16/2014|04:07:10PM|AppZ|INFO|ErrorHandler|Testing again.......
238
+ 09/16/2014|04:07:10PM|AppZ|INFO|ErrorHandler|Again.....
239
+ 09/16/2014|04:07:10PM|AppZ|INFO|ErrorHandler|Test exception
240
+ 09/16/2014|04:07:10PM|AppZ|FATAL|ErrorHandler|This is weird
241
+ ```
242
+
243
+ #### Example of custom output
244
+
245
+ ##### Sample code
246
+ ```
247
+ logger = ABCSharedLogger.instance
248
+ logger.set_level(:debug)
249
+
250
+ logger.set_output(STDERR)
251
+ logger.log('Testing to STDERR')
252
+ logger.log(:info, 'Testing to STDERR')
253
+
254
+ logger.set_output(STDOUT)
255
+ logger.log('Testing to STDOUT')
256
+ logger.log(:warning, 'Testing to STDOUT')
257
+
258
+ file = File.open('testing.log', 'a+')
259
+ logger.set_output(file)
260
+ logger.log('Testing to file')
261
+ logger.log(:warning, 'Testing to file')
262
+ logger.set_output(STDOUT)
263
+ file.close
264
+ ```
265
+
266
+ ##### Sample output
267
+
268
+ STDERR<br>
269
+
270
+ ```
271
+ 09/16/2014|02:57:35PM|ABCTester.rb|DEBUG|next|Testing to STDERR
272
+ 09/16/2014|02:57:35PM|ABCTester.rb|INFO|next|Testing to STDERR
273
+ ```
274
+
275
+ STDOUT<br>
276
+
277
+ ```
278
+ 09/16/2014|02:57:35PM|ABCTester.rb|INFO|next|Testing to STDOUT
279
+ 09/16/2014|02:57:35PM|ABCTester.rb|WARNING|next|Testing to STDOUT
280
+ ```
281
+
282
+ File: testing.log<br>
283
+
284
+ ```
285
+ 09/16/2014|02:57:35PM|ABCTester.rb|WARNING|next|Testing to file
286
+ 09/16/2014|02:57:35PM|ABCTester.rb|WARNING|next|Testing to file
287
+ ```
288
+
289
+
290
+ ## Contributing
291
+
292
+ 1. Fork it ( https://github.com/keith23/ABCLogger/fork )
293
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
294
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
295
+ 4. Push to the branch (`git push origin my-new-feature`)
296
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
data/lib/ABCLogger.rb ADDED
@@ -0,0 +1,294 @@
1
+ require 'ABCLogger/version'
2
+ require 'ABCLogger/exceptions'
3
+ require 'date'
4
+
5
+ # ABCLogger logs messages to stdout, stderr, or a file
6
+ class ABCLogger
7
+
8
+ #include Singleton
9
+
10
+ private
11
+ DEBUG_LOG = false
12
+
13
+ # Output file open flag
14
+ attr_reader :outfile_open
15
+ # Output file
16
+ attr_reader :outfile
17
+ # Saved file name
18
+ attr_reader :file_name
19
+ # Saved log level
20
+ attr_reader :level_save
21
+
22
+ # Log levels
23
+ attr_reader :levels
24
+ # Log level names
25
+ attr_reader :lnames
26
+
27
+ public
28
+ LEVELS = {:debug => 0, :info => 1, :warning => 2,
29
+ :error => 3, :fatal => 4, :unknown => 5}
30
+
31
+ # Logging level
32
+ # @return [symbol] current log level
33
+ attr_reader :level
34
+ # Logging enabled
35
+ # @return [boolean] logging enabled flag
36
+ attr_reader :enabled
37
+ # Logging location
38
+ # @return [string] log message location
39
+ attr_reader :location
40
+ # Program name
41
+ # @return [string] program name
42
+ attr_reader :program
43
+
44
+ # Set logging level
45
+ # @param [int] level
46
+ def set_level(level)
47
+ @level = level
48
+ end
49
+
50
+ # Turn logging on and off
51
+ # @param [boolean] flag
52
+ def set_enabled(flag)
53
+ @enabled = flag
54
+ end
55
+
56
+ # Set log message location
57
+ # @param [string] name
58
+ def set_location(name)
59
+ @location = name
60
+ end
61
+
62
+ # Set program name
63
+ # @param [string] name
64
+ def set_program(name)
65
+ @program = name
66
+ end
67
+
68
+ # open the logfile
69
+ # @param [string] filename
70
+ def open(filename = 'ABCLogger.log')
71
+ begin
72
+ @outfile = File.open(filename, 'a+')
73
+ @file_name = filename
74
+ @outfile_open = true
75
+ if DEBUG_LOG
76
+ puts "***ABCLogger:file: #{@file_name} was opened"
77
+ end
78
+ rescue SystemCallError => exc
79
+ handle_exception(exc)
80
+ end
81
+ end
82
+
83
+ # open the logfile
84
+ # @param [string] path nil for no path
85
+ # @param [string] prefix file name prefix
86
+ # @param [string] ext file name extension
87
+ def open_with_date(path = nil, prefix = 'ABCLogger', ext = 'log')
88
+ begin
89
+ d = DateTime.now
90
+ if path == nil
91
+ @file_name = prefix << '_' << d.strftime('%Y%m%d') << '.' << ext
92
+ else
93
+ @file_name = path << '/' << prefix << '_' << d.strftime('%Y%m%d') << '.' << ext
94
+ end
95
+ @outfile = File.open(@file_name, 'a+')
96
+ @outfile_open = true
97
+ if DEBUG_LOG
98
+ puts "***ABCLogger:file: #{@file_name} was opened"
99
+ end
100
+ rescue SystemCallError => exc
101
+ handle_exception(exc)
102
+ end
103
+ end
104
+
105
+ # close the logfile
106
+ def close
107
+ begin
108
+ @outfile.close
109
+ @outfile = STDOUT
110
+ @outfile_open = false
111
+ if DEBUG_LOG
112
+ puts "***ABCLogger:file: #{@file_name} was closed"
113
+ end
114
+ @file_name = nil
115
+ rescue SystemCallError => exc
116
+ handle_exception(exc)
117
+ end
118
+ end
119
+
120
+ # Set output to STDOUT, STDERR, or a File
121
+ # @param output [object] output for log
122
+ def set_output(output = STDOUT)
123
+ if @outfile_open
124
+ close
125
+ end
126
+ @outfile = output
127
+ if DEBUG_LOG
128
+ puts "***ABCLogger:ouput was changed to: #{output_name}"
129
+ end
130
+ end
131
+
132
+ # Log message with level
133
+ # @param level [string] logging level, optional
134
+ # @param loc [string] location string, optional
135
+ # @param msg [string] message string
136
+ def log(level = nil, loc = nil, msg)
137
+
138
+ if level == nil
139
+ level = @level_save
140
+ end
141
+
142
+ if level.is_a? Symbol
143
+ #puts 'level is symbol'
144
+ @level_save = level
145
+ end
146
+
147
+ if level.is_a? String
148
+ #puts 'level is string'
149
+ if loc == nil
150
+ loc = level
151
+ level = @level_save
152
+ end
153
+ end
154
+
155
+ write_msg(@outfile, level, loc, msg)
156
+
157
+ end
158
+
159
+ # Log formatted message - single arg or array of args
160
+ # @param level [int] log level, optional
161
+ # @param loc [string] message location, optional
162
+ # @param msg [string] message format string
163
+ # @param args [arg or array of args]
164
+ def log_formatted(level = nil, loc = nil, msg, args)
165
+ formatted = sprintf(msg, *args)
166
+ log(level, loc, formatted)
167
+ end
168
+
169
+ # Log formatted message - variable number of args
170
+ # @param level [int] log level
171
+ # @param loc [string] message location
172
+ # @param msg [string] message format string
173
+ # @param args [arg1 arg2 ... argN] variable number of args
174
+ def log_formatted_vars(level, loc, msg, *args)
175
+ formatted = sprintf(msg, *args)
176
+ log(level, loc, formatted)
177
+ end
178
+
179
+ # Log exception to logfile
180
+ # @param level [int] log level, optional
181
+ # @param loc [string] message location, optional
182
+ # @param exc [exception] exception to log
183
+ def log_exception(level = nil, loc = nil, exc)
184
+ log(level, loc, exc.message)
185
+ end
186
+
187
+ # Initialize ABCLogger
188
+ # @return [ABCLogger]
189
+ def initialize
190
+ @levels = {:debug => 0, :info => 1, :warning => 2,
191
+ :error => 3, :fatal => 4, :unknown => 5}
192
+ @lnames = %w(DEBUG INFO WARNING ERROR FATAL UNKNOWN)
193
+ @level = :debug
194
+ @enabled = true
195
+ @location = 'Main'
196
+ @outfile_open = false
197
+ @outfile = STDOUT
198
+ @file_name = nil
199
+ @level_save = :debug
200
+ @program = $0
201
+ end
202
+
203
+ private
204
+
205
+ def write_msg(output, level = :debug, loc = nil, msg)
206
+
207
+ if loc == nil
208
+ loc = @location
209
+ else
210
+ @location = loc
211
+ end
212
+
213
+ #if DEBUG_LOG and 1 == 2
214
+ # puts @levels[@level]
215
+ # puts @levels[level]
216
+ #end
217
+
218
+ case level
219
+ when Integer
220
+ # puts "INTEGER level_name(#{level})"
221
+ lvl_int = level
222
+ when Symbol
223
+ # puts "SYMBOL level_name(#{level})"
224
+ lvl_int = @levels[level]
225
+ when String
226
+ # puts "STRING level_name(#{level})"
227
+ lvl_int = 0
228
+ else
229
+ # puts "NOT SURE level_name(#{level})"
230
+ lvl_int = 0
231
+ end
232
+
233
+ @level_save = lvl_int
234
+
235
+ if @enabled
236
+ if @levels[@level] <= lvl_int # @levels[level]
237
+ output.puts "#{date_str}|#{@program}|#{level_name(level)}|#{loc}|#{msg}"
238
+ end
239
+ end
240
+
241
+ end
242
+
243
+ def date_str
244
+ d = DateTime.now
245
+ d.strftime('%m/%d/%Y|%I:%M:%S%p')
246
+ end
247
+
248
+ def level_name(sym)
249
+ #puts "level_name(#{sym})"
250
+ case sym
251
+ when Integer
252
+ #puts "INTEGER level_name(#{sym})"
253
+ return @lnames[sym]
254
+ when Symbol
255
+ #puts "SYMBOL level_name(#{sym})"
256
+ when String
257
+ #puts "STRING level_name(#{sym})"
258
+ else
259
+ #puts "NOT SURE level_name(#{sym})"
260
+ end
261
+ #if sym == nil
262
+ # sym = 0
263
+ #end
264
+ lvl = @levels[sym]
265
+ @lnames[lvl]
266
+ end
267
+
268
+ # make private
269
+ def output_name
270
+ if @outfile == STDOUT
271
+ return 'STDOUT'
272
+ end
273
+ if @outfile == STDERR
274
+ return 'STDERR'
275
+ end
276
+ @file_name
277
+ end
278
+
279
+ # log exception and raise
280
+ def handle_exception(exc)
281
+ self.log_exception(:fatal, '***ABCLogger***', exc)
282
+ raise ABCLoggerException.new(exc.message)
283
+ end
284
+
285
+ #def test_func(sym)
286
+ # lvl = @levels[sym]
287
+ # puts "#{lvl}|#{@lnames[lvl]}"
288
+ #end
289
+
290
+ end
291
+
292
+ #module ABCLogger
293
+ # Your code goes here...
294
+ #end
@@ -0,0 +1,6 @@
1
+ # ABCLogger Exceptions
2
+
3
+ # ABCLoggerException for log file errors
4
+ class ABCLoggerException < Exception
5
+
6
+ end
@@ -0,0 +1,10 @@
1
+ # ABCVersion contains the version for the gem
2
+ class ABCVersion
3
+
4
+ VERSION = "0.0.1"
5
+
6
+ end
7
+
8
+ ##module ABCLogMod
9
+ ## VERSION = "0.0.1"
10
+ ##end
@@ -0,0 +1,34 @@
1
+ # ABCSharedLogger
2
+ require 'ABCLogger'
3
+ require 'singleton'
4
+
5
+ # Singleton version of ABCLogger
6
+ class ABCSharedLogger < ABCLogger
7
+
8
+ include Singleton
9
+
10
+ # Instance method for ABCSharedLogger
11
+ # @return [ABCSharedLogger] instance
12
+ def self.instance
13
+
14
+ if DEBUG_LOG
15
+ puts '***ABCSharedLogger::instance'
16
+ end
17
+
18
+ @@instance ||= new
19
+
20
+ end
21
+
22
+ private
23
+
24
+ def initialize
25
+
26
+ if DEBUG_LOG
27
+ puts '***ABCSharedLogger::initialize'
28
+ end
29
+
30
+ super
31
+
32
+ end
33
+
34
+ end
data/test/ABCTester.rb ADDED
@@ -0,0 +1,86 @@
1
+ # Test program for ABCLogger a ruby logfile class
2
+ require 'ABCLogger'
3
+ require 'ABCSharedLogger'
4
+
5
+ errno = 7
6
+ age = 42
7
+ name = 'Gunny'
8
+ job = 'Developer'
9
+
10
+ # ABCLogger STDOUT example
11
+ logger = ABCLogger.new
12
+ logger.set_level(:debug)
13
+
14
+ logger.log(:debug, 'init', 'Test message')
15
+ logger.log(:error, 'Test message' )
16
+ logger.log('post init', 'Next message')
17
+ logger.log('Msg only ARG Test message')
18
+
19
+ logger.log_formatted(:warning, 'init','Value was: %d', age)
20
+ logger.log_formatted(:info, 'Value was: %d', age)
21
+ logger.log_formatted('not_init','Value was: %d', age)
22
+ logger.log_formatted('Value was: %d', age)
23
+
24
+ logger.log_formatted_vars(:debug, 'next',
25
+ 'name: %s, age: %d, job: %s', name, age, job)
26
+
27
+
28
+ # ABCLogger File example
29
+ #logger.open('ABCTester.log')
30
+ #logger.open_with_date('/home/testing', 'ABCLog', 'log')
31
+ logger.open_with_date
32
+ logger.log(:warning, 'file', 'Test message' )
33
+ logger.log(:fatal, 'Test message' )
34
+ logger.log('Msg only ARGS Test message' )
35
+ logger.log_exception(:unknown, Exception.new('File exception'))
36
+ logger.close
37
+
38
+ # ABCLogger Custom example
39
+ logger.set_output(STDERR)
40
+ logger.log('Testing to STDERR')
41
+ logger.log(:info, 'Testing to STDERR')
42
+
43
+ logger.set_output(STDOUT)
44
+ logger.log('Testing to STDOUT')
45
+ logger.log(:warning, 'Testing to STDOUT')
46
+
47
+ file = File.open('testing.log', 'a+')
48
+ logger.set_output(file)
49
+ logger.log('Testing to file')
50
+ logger.log(:warning, 'Testing to file')
51
+ logger.set_output(STDOUT)
52
+ file.close
53
+
54
+
55
+ # ABCSharedLogger example
56
+ ABCSharedLogger.instance.set_program('ABCTester')
57
+ ABCSharedLogger.instance.set_level(:warning)
58
+ ABCSharedLogger.instance.log(:error, 'Testing singleton')
59
+ ABCSharedLogger.instance.log('Testing singleton again')
60
+
61
+ log = ABCSharedLogger.instance
62
+ log.log(:warning,'ReadData','New test 1')
63
+ log.log('New test 2')
64
+ log.log_formatted_vars(:fatal, 'ErrorHandler', 'RC = %d', errno)
65
+
66
+ # ABCSharedLogger example
67
+ flog = ABCSharedLogger.instance
68
+ flog.set_level(:debug)
69
+
70
+ flog.open('testing.log')
71
+ flog.log(:warning, 'Testing again.......')
72
+ flog.log('Again.....')
73
+ flog.log_exception(Exception.new ('Test exception'))
74
+ flog.log(:fatal, 'This is weird')
75
+ flog.close
76
+
77
+ # ABCSharedLogger example
78
+ dlog = ABCSharedLogger.instance
79
+ dlog.set_program('AppZ')
80
+
81
+ dlog.open_with_date(nil, 'ABCTst', 'log')
82
+ dlog.log :info, 'Testing again.......'
83
+ dlog.log 'Again.....'
84
+ dlog.log_exception ( Exception.new ('Test exception'))
85
+ dlog.log(:fatal, 'This is weird')
86
+ dlog.close
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ABCLogger
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Keith
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-09-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: Ruby class for logging to stdout, stderr, or a file.
42
+ email:
43
+ - keithk23@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - .gitignore
49
+ - ABCLogger.gemspec
50
+ - Gemfile
51
+ - LICENSE.txt
52
+ - README.md
53
+ - Rakefile
54
+ - lib/ABCLogger.rb
55
+ - lib/ABCLogger/exceptions.rb
56
+ - lib/ABCLogger/version.rb
57
+ - lib/ABCSharedLogger.rb
58
+ - test/ABCTester.rb
59
+ homepage: ''
60
+ licenses:
61
+ - MIT
62
+ metadata: {}
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ requirements: []
78
+ rubyforge_project:
79
+ rubygems_version: 2.0.14
80
+ signing_key:
81
+ specification_version: 4
82
+ summary: Ruby class for logging to a logfile.
83
+ test_files:
84
+ - test/ABCTester.rb
85
+ has_rdoc: