exologger 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/exologger.rb +27 -0
  3. data/test/exologger_test.rb +40 -0
  4. metadata +60 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a0ea86ab7c2ee081011c5e0cd113bb90c205039b
4
+ data.tar.gz: 545aae4d51274a5ea754e58b9f475f21578ed0c9
5
+ SHA512:
6
+ metadata.gz: 2303cdce8dfdb6b08618d7d4d7d60dfed0a0ad62668541fa320fc032684284540d7d77cb30fb4839da8f4457af67eb4d54f23878109edf33293d60c29bd7b7ce
7
+ data.tar.gz: f0fbd97df08008963f2eff370471c3e4800476ca4381ce2d2a65fe5cfa0cfab051b04a10c00dc80098a43598b748ee98c541d57b5604b724bf6391f4557ae05e
data/lib/exologger.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'rubygems'
2
+ require 'log4r'
3
+
4
+ $pattern_formatter_params = {:pattern => "%l, %d, %c, %M", :date_pattern => "%Y-%m-%d %H:%M:%S"}
5
+ $pattern_formatter = Log4r::PatternFormatter.new $pattern_formatter_params
6
+ $stdout_outputter = Log4r::Outputter.stdout
7
+ $stdout_outputter.formatter = $pattern_formatter
8
+
9
+ module Exologger
10
+
11
+ # The method returns a log4r logger which outputs to stdout in a
12
+ # standard format followed across all services at Exotel
13
+ # log4r ref: http://log4r.rubyforge.org/manual.html
14
+ def self.get_logger(name)
15
+ raise ArgumentError, "Logger must have a name", caller if name.nil?
16
+ exologger = Log4r::Logger.new name
17
+ exologger.outputters = $stdout_outputter
18
+ return exologger
19
+ end
20
+
21
+ # standard formatter to be used across all services. If you are using a a custom
22
+ # outputter, you should configure the outputter with the formatter returned
23
+ # by this method
24
+ def self.get_formatter
25
+ return $pattern_formatter
26
+ end
27
+ end
@@ -0,0 +1,40 @@
1
+ require 'test/unit'
2
+ require_relative "../lib/exologger.rb"
3
+
4
+ class ExologgerTest < Test::Unit::TestCase
5
+
6
+ def testLoggerInstantiation
7
+ logger = Exologger.get_logger "logger1"
8
+ assert_instance_of(Log4r::Logger, logger, 'logger is not an instance of log4r')
9
+ assert_equal(1, logger.outputters.size, "Expected only one outputter. But, found more than one")
10
+ assert_instance_of(Log4r::StdoutOutputter, logger.outputters.first, 'outputter is not an instance of StdoutOutputter')
11
+ assert_instance_of(Log4r::PatternFormatter, logger.outputters.first.formatter, 'formatter is not an instance of PatternFormatter')
12
+ assert_equal("logger1", logger.name)
13
+ end
14
+
15
+ def testLogMessageFormat
16
+ logger = Exologger.get_logger "logger2"
17
+ stringIO = StringIO.new
18
+ stringIOOutputter = Log4r::IOOutputter.new("stringio", stringIO)
19
+ stringIOOutputter.formatter = Exologger.get_formatter
20
+ logger.outputters = [stringIOOutputter]
21
+ logger.debug "test message1"
22
+ if !(stringIO.string =~ /DEBUG, [0-9]{1,4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}, logger2, test message1/)
23
+ logs = stringIO.string
24
+ assert(false, "wrong log message format: #{logs}")
25
+ end
26
+ end
27
+
28
+ def testMultiLineLogMessage
29
+ logger = Exologger.get_logger "logger3"
30
+ stringIO = StringIO.new
31
+ stringIOOutputter = Log4r::IOOutputter.new("stringio", stringIO)
32
+ stringIOOutputter.formatter = Exologger.get_formatter
33
+ logger.outputters = [stringIOOutputter]
34
+ logger.info "test multiline message \n line1 \n line2 \t\n line3 \t\n\n"
35
+ if !(stringIO.string =~ /INFO, [0-9]{1,4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}, logger3, test multiline message \n line1 \n line2 \t\n line3 \t\n\n/)
36
+ logs = stringIO.string
37
+ assert(false, "wrong log message format: #{logs}")
38
+ end
39
+ end
40
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: exologger
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Vishnu Gajendran
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-02-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: log4r
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: |-
28
+ A simple wrapper around Log4r logger to ensure
29
+ that all service logs follow a standard format
30
+ email: vishnu.gajendran@exotel.in
31
+ executables: []
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - lib/exologger.rb
36
+ - test/exologger_test.rb
37
+ homepage: http://rubygems.org/gems/exologger
38
+ licenses: []
39
+ metadata: {}
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirements: []
55
+ rubyforge_project:
56
+ rubygems_version: 2.5.1
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: Logger used across services at Exotel
60
+ test_files: []