slogger 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +4 -0
- data/.gitignore +3 -0
- data/Gemfile +2 -9
- data/Gemfile.lock +15 -16
- data/README.rdoc +60 -1
- data/Rakefile +2 -47
- data/lib/slogger/base.rb +133 -0
- data/lib/slogger/common_logger.rb +65 -0
- data/lib/slogger/logger.rb +18 -84
- data/lib/slogger/version.rb +8 -0
- data/lib/slogger.rb +3 -0
- data/slogger.gemspec +21 -0
- data/spec/slogger/common_logger_spec.rb +109 -0
- data/spec/slogger/logger_spec.rb +3 -6
- data/spec/spec_helper.rb +1 -12
- metadata +25 -45
- data/VERSION +0 -1
data/.document
ADDED
data/.gitignore
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,25 +1,24 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
slogger (0.0.4)
|
5
|
+
|
1
6
|
GEM
|
7
|
+
remote: http://rubygems.org/
|
2
8
|
specs:
|
3
9
|
diff-lcs (1.1.2)
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
rspec (2.5.0)
|
11
|
-
rspec-core (~> 2.5.0)
|
12
|
-
rspec-expectations (~> 2.5.0)
|
13
|
-
rspec-mocks (~> 2.5.0)
|
14
|
-
rspec-core (2.5.1)
|
15
|
-
rspec-expectations (2.5.0)
|
10
|
+
rspec (2.6.0.rc2)
|
11
|
+
rspec-core (= 2.6.0.rc2)
|
12
|
+
rspec-expectations (= 2.6.0.rc2)
|
13
|
+
rspec-mocks (= 2.6.0.rc2)
|
14
|
+
rspec-core (2.6.0.rc2)
|
15
|
+
rspec-expectations (2.6.0.rc2)
|
16
16
|
diff-lcs (~> 1.1.2)
|
17
|
-
rspec-mocks (2.
|
17
|
+
rspec-mocks (2.6.0.rc2)
|
18
18
|
|
19
19
|
PLATFORMS
|
20
20
|
ruby
|
21
21
|
|
22
22
|
DEPENDENCIES
|
23
|
-
|
24
|
-
|
25
|
-
rspec
|
23
|
+
rspec (~> 2.6.0.rc2)
|
24
|
+
slogger!
|
data/README.rdoc
CHANGED
@@ -44,6 +44,17 @@ Sample: message log preceded by spent time
|
|
44
44
|
|
45
45
|
# and after, look at the syslog file of your SO ;)
|
46
46
|
|
47
|
+
=== Slogger::CommonLogger
|
48
|
+
|
49
|
+
A useful class which exposes the Ruby's standard Syslog with the same API that
|
50
|
+
Ruby's standard Logger to be used, for example, in Rails applications.
|
51
|
+
|
52
|
+
Just add the snippet below to the config/environments/developement.rb of an Rails
|
53
|
+
application and everything will be logged thru the Ruby's standard Syslog library:
|
54
|
+
|
55
|
+
config.log_level = :info
|
56
|
+
config.logger = Slogger::CommonLogger.new "rappils", config.log_level, :local0
|
57
|
+
|
47
58
|
=== Slogger::Rack::RequestLogger
|
48
59
|
|
49
60
|
A Rack middleware to log incoming requests.
|
@@ -58,13 +69,61 @@ Sample:
|
|
58
69
|
end
|
59
70
|
|
60
71
|
# and after, look at the syslog file of your SO ;)
|
61
|
-
|
72
|
+
|
62
73
|
== Future
|
63
74
|
|
64
75
|
I don't know. I think in adding more stuff sometime in the future. Let's see.
|
65
76
|
|
66
77
|
For now is it.
|
67
78
|
|
79
|
+
== Quick view on Syslog RFC 5424
|
80
|
+
|
81
|
+
If you want to get a look at RFC 5424, which I really recommend, you can go to:
|
82
|
+
|
83
|
+
http://tools.ietf.org/html/rfc5424
|
84
|
+
|
85
|
+
According to that:
|
86
|
+
|
87
|
+
# Message Severities
|
88
|
+
#
|
89
|
+
# - Emergency: system is unusable
|
90
|
+
# - Alert: action must be taken immediately
|
91
|
+
# - Critical: critical conditions
|
92
|
+
# - Error: error conditions
|
93
|
+
# - Warning: warning conditions
|
94
|
+
# - Notice: normal but significant condition
|
95
|
+
# - Informational: informational messages
|
96
|
+
# - Debug: debug-level messages
|
97
|
+
|
98
|
+
And...
|
99
|
+
|
100
|
+
# Message Facilities
|
101
|
+
#
|
102
|
+
# - kernel messages
|
103
|
+
# - user-level messages
|
104
|
+
# - mail system
|
105
|
+
# - system daemons
|
106
|
+
# - security/authorization messages
|
107
|
+
# - messages generated internally by syslogd
|
108
|
+
# - line printer subsystem
|
109
|
+
# - network news subsystem
|
110
|
+
# - UUCP subsystem
|
111
|
+
# - clock daemon
|
112
|
+
# - security/authorization messages
|
113
|
+
# - FTP daemon
|
114
|
+
# - NTP subsystem
|
115
|
+
# - log audit
|
116
|
+
# - log alert
|
117
|
+
# - clock daemon (note 2)
|
118
|
+
# - local use 0 (local0)
|
119
|
+
# - local use 1 (local1)
|
120
|
+
# - local use 2 (local2)
|
121
|
+
# - local use 3 (local3)
|
122
|
+
# - local use 4 (local4)
|
123
|
+
# - local use 5 (local5)
|
124
|
+
# - local use 6 (local6)
|
125
|
+
# - local use 7 (local7)
|
126
|
+
|
68
127
|
== Copyright
|
69
128
|
|
70
129
|
Copyright (c) 2011 Leandro Silva (CodeZone).
|
data/Rakefile
CHANGED
@@ -1,50 +1,5 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'bundler'
|
3
|
-
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require 'rake'
|
2
|
+
Bundler::GemHelper.install_tasks
|
11
3
|
|
12
|
-
require 'jeweler'
|
13
|
-
Jeweler::Tasks.new do |gem|
|
14
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
15
|
-
gem.name = "slogger"
|
16
|
-
gem.homepage = "http://github.com/leandrosilva/slogger"
|
17
|
-
gem.license = "MIT"
|
18
|
-
gem.summary = %Q{Slogger is a Ruby library to help work with standard Ruby Syslog library.}
|
19
|
-
gem.description = %Q{Slogger is a Ruby library to help work with standard Ruby Syslog library. Yeah! Just it.}
|
20
|
-
gem.email = "leandrodoze@gmail.com"
|
21
|
-
gem.authors = ["Leandro Silva"]
|
22
|
-
gem.files = FileList["[A-Z]*", "{lib,sample,spec}/**/*"]
|
23
|
-
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
24
|
-
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
25
|
-
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
|
26
|
-
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
27
|
-
end
|
28
|
-
Jeweler::RubygemsDotOrgTasks.new
|
29
|
-
|
30
|
-
require 'rspec/core'
|
31
4
|
require 'rspec/core/rake_task'
|
32
|
-
RSpec::Core::RakeTask.new
|
33
|
-
spec.pattern = FileList['spec/**/*_spec.rb']
|
34
|
-
end
|
35
|
-
|
36
|
-
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
37
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
38
|
-
end
|
39
|
-
|
40
|
-
task :default => :spec
|
41
|
-
|
42
|
-
require 'rake/rdoctask'
|
43
|
-
Rake::RDocTask.new do |rdoc|
|
44
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
45
|
-
|
46
|
-
rdoc.rdoc_dir = 'rdoc'
|
47
|
-
rdoc.title = "slogger #{version}"
|
48
|
-
rdoc.rdoc_files.include('README*')
|
49
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
50
|
-
end
|
5
|
+
RSpec::Core::RakeTask.new
|
data/lib/slogger/base.rb
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
module Slogger
|
2
|
+
class Base
|
3
|
+
|
4
|
+
#
|
5
|
+
# Syslog Message Severities:
|
6
|
+
#
|
7
|
+
# - Emergency: system is unusable
|
8
|
+
# - Alert: action must be taken immediately
|
9
|
+
# - Critical: critical conditions
|
10
|
+
# - Error: error conditions
|
11
|
+
# - Warning: warning conditions
|
12
|
+
# - Notice: normal but significant condition
|
13
|
+
# - Informational: informational messages
|
14
|
+
# - Debug: debug-level messages
|
15
|
+
#
|
16
|
+
SYSLOG_SEVERITIES = {
|
17
|
+
:emerg => Syslog::LOG_EMERG,
|
18
|
+
:alert => Syslog::LOG_ALERT,
|
19
|
+
:crit => Syslog::LOG_CRIT,
|
20
|
+
:err => Syslog::LOG_ERR,
|
21
|
+
:warning => Syslog::LOG_WARNING,
|
22
|
+
:notice => Syslog::LOG_NOTICE,
|
23
|
+
:info => Syslog::LOG_INFO,
|
24
|
+
:debug => Syslog::LOG_DEBUG
|
25
|
+
}
|
26
|
+
|
27
|
+
#
|
28
|
+
# Syslog Message Facilities:
|
29
|
+
#
|
30
|
+
# - kernel messages
|
31
|
+
# - user-level messages
|
32
|
+
# - mail system
|
33
|
+
# - system daemons
|
34
|
+
# - security/authorization messages
|
35
|
+
# - messages generated internally by syslogd
|
36
|
+
# - line printer subsystem
|
37
|
+
# - network news subsystem
|
38
|
+
# - UUCP subsystem
|
39
|
+
# - clock daemon
|
40
|
+
# - security/authorization messages
|
41
|
+
# - FTP daemon
|
42
|
+
# - NTP subsystem
|
43
|
+
# - log audit
|
44
|
+
# - log alert
|
45
|
+
# - clock daemon (note 2)
|
46
|
+
# - local use 0 (local0)
|
47
|
+
# - local use 1 (local1)
|
48
|
+
# - local use 2 (local2)
|
49
|
+
# - local use 3 (local3)
|
50
|
+
# - local use 4 (local4)
|
51
|
+
# - local use 5 (local5)
|
52
|
+
# - local use 6 (local6)
|
53
|
+
# - local use 7 (local7)
|
54
|
+
#
|
55
|
+
SYSLOG_FACILITIES = {
|
56
|
+
:kernel => Syslog::LOG_KERN,
|
57
|
+
:user => Syslog::LOG_USER,
|
58
|
+
:mail => Syslog::LOG_MAIL,
|
59
|
+
:daemon => Syslog::LOG_DAEMON,
|
60
|
+
:auth => Syslog::LOG_AUTH,
|
61
|
+
:syslog => Syslog::LOG_SYSLOG,
|
62
|
+
:lpr => Syslog::LOG_LPR,
|
63
|
+
:news => Syslog::LOG_NEWS,
|
64
|
+
:uucp => Syslog::LOG_UUCP,
|
65
|
+
:cron => Syslog::LOG_CRON,
|
66
|
+
:authpriv => Syslog::LOG_AUTHPRIV,
|
67
|
+
:ftp => Syslog::LOG_FTP,
|
68
|
+
:local0 => Syslog::LOG_LOCAL0,
|
69
|
+
:local1 => Syslog::LOG_LOCAL1,
|
70
|
+
:local2 => Syslog::LOG_LOCAL2,
|
71
|
+
:local3 => Syslog::LOG_LOCAL3,
|
72
|
+
:local4 => Syslog::LOG_LOCAL4,
|
73
|
+
:local5 => Syslog::LOG_LOCAL5,
|
74
|
+
:local6 => Syslog::LOG_LOCAL6,
|
75
|
+
:local7 => Syslog::LOG_LOCAL7
|
76
|
+
}
|
77
|
+
|
78
|
+
attr_reader :app_name, :severity, :facility
|
79
|
+
|
80
|
+
#
|
81
|
+
# To build a Slogger::Base instance.
|
82
|
+
#
|
83
|
+
# +app_name+:: The appliaction name to be logged
|
84
|
+
# +severity+:: The log severity.
|
85
|
+
# +facility+:: A typical syslog facility
|
86
|
+
# +custom_severity_levels+:: To be used by children classes. It defaults to
|
87
|
+
# Slogger::Base::SYSLOG_SEVERITIES.
|
88
|
+
#
|
89
|
+
# Raises an ArgumentError if app_name, severity, or facility is nil.
|
90
|
+
#
|
91
|
+
def initialize(app_name, severity, facility, custom_severity_levels=SYSLOG_SEVERITIES)
|
92
|
+
raise_argument_error_to_required_parameter "app_name" unless app_name
|
93
|
+
raise_argument_error_to_required_parameter "severity" unless severity
|
94
|
+
raise_argument_error_to_required_parameter "facility" unless facility
|
95
|
+
|
96
|
+
raise_argument_error_to_invalid_parameter "severity", "SEVERITIES" unless custom_severity_levels[severity]
|
97
|
+
raise_argument_error_to_invalid_parameter "facility", "FACILITIES" unless SYSLOG_FACILITIES[facility]
|
98
|
+
|
99
|
+
@app_name = app_name
|
100
|
+
@severity = severity
|
101
|
+
@severity_as_int = custom_severity_levels[severity]
|
102
|
+
@facility = facility
|
103
|
+
@facility_as_int = SYSLOG_FACILITIES[facility]
|
104
|
+
@custom_severity_levels = custom_severity_levels
|
105
|
+
end
|
106
|
+
|
107
|
+
def severity=(value)
|
108
|
+
raise_argument_error_to_invalid_parameter "severity", "SEVERITIES" unless @custom_severity_levels[value]
|
109
|
+
|
110
|
+
@severity = value
|
111
|
+
@severity_as_int = @custom_severity_levels[severity]
|
112
|
+
end
|
113
|
+
|
114
|
+
def log(severity, message, &block)
|
115
|
+
return if SYSLOG_SEVERITIES[severity] > @severity_as_int
|
116
|
+
|
117
|
+
if block_given?
|
118
|
+
benchmark = Benchmark.measure &block
|
119
|
+
message = "[time: #{benchmark.real}] #{message}"
|
120
|
+
end
|
121
|
+
|
122
|
+
Syslog.open(@app_name, Syslog::LOG_PID, @facility_as_int) { |s| s.send severity, message }
|
123
|
+
end
|
124
|
+
|
125
|
+
def raise_argument_error_to_required_parameter(param)
|
126
|
+
raise ArgumentError, "The '#{param}' parameter is required."
|
127
|
+
end
|
128
|
+
|
129
|
+
def raise_argument_error_to_invalid_parameter(param, options)
|
130
|
+
raise ArgumentError, "The '#{param}' parameter is invalid. Inspect the #{options} constant to know the options."
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Slogger
|
2
|
+
#
|
3
|
+
# It just exposes Ruby's Syslog with the same API of Ruby's standard Logger class. So
|
4
|
+
# you can use it in a Rails application, for instance.
|
5
|
+
#
|
6
|
+
# For example, add the snippet below to the config/environments/developement.rb of an
|
7
|
+
# Rails application:
|
8
|
+
#
|
9
|
+
# config.log_level = :info
|
10
|
+
# config.logger = Slogger::CommonLogger.new "rappils", config.log_level, :local0
|
11
|
+
#
|
12
|
+
# That's all. The Rails application will log everything to the standard syslog.
|
13
|
+
#
|
14
|
+
class CommonLogger < Base
|
15
|
+
|
16
|
+
SEVERITIES = {
|
17
|
+
:unknow => Syslog::LOG_EMERG,
|
18
|
+
:fatal => Syslog::LOG_ALERT,
|
19
|
+
:error => Syslog::LOG_ERR,
|
20
|
+
:warning => Syslog::LOG_WARNING,
|
21
|
+
:info => Syslog::LOG_INFO,
|
22
|
+
:debug => Syslog::LOG_DEBUG
|
23
|
+
}
|
24
|
+
|
25
|
+
#
|
26
|
+
# Bridge between standard Ruby Logger and Syslog
|
27
|
+
#
|
28
|
+
BRIDGE_SEVERITIES = {
|
29
|
+
:unknow => :emerg,
|
30
|
+
:fatal => :alert,
|
31
|
+
:error => :err,
|
32
|
+
:warning => :warning,
|
33
|
+
:info => :info,
|
34
|
+
:debug => :debug
|
35
|
+
}
|
36
|
+
|
37
|
+
#
|
38
|
+
# Just a little sugar
|
39
|
+
#
|
40
|
+
FACILITIES = ::Slogger::Base::SYSLOG_FACILITIES
|
41
|
+
|
42
|
+
#
|
43
|
+
# To build a Slogger::CommonLogger instance.
|
44
|
+
#
|
45
|
+
# +app_name+:: The appliaction name to be logged
|
46
|
+
# +severity+:: The log severity (according to standard Ruby Logger): :unknow, :fatal,
|
47
|
+
# :error, :warning, :info, or :debug. It can be changed at anytime.
|
48
|
+
# +facility+:: A typical syslog facility: :kernel, :user, :mail, :daemon, :auth,
|
49
|
+
# :syslog, :lpr, :news, :uucp, :cron, :authpriv, :ftp,
|
50
|
+
# :local0, :local1, :local2, :local3, :local4, :local5,
|
51
|
+
# :local6, or :local7
|
52
|
+
#
|
53
|
+
# Raises an ArgumentError if app_name, severity, or facility is nil.
|
54
|
+
#
|
55
|
+
def initialize(app_name, severity, facility)
|
56
|
+
super app_name, severity, facility, SEVERITIES
|
57
|
+
end
|
58
|
+
|
59
|
+
SEVERITIES.each_key do |severity|
|
60
|
+
define_method severity do |message, &block|
|
61
|
+
log BRIDGE_SEVERITIES[severity], message, &block
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/lib/slogger/logger.rb
CHANGED
@@ -2,49 +2,27 @@ module Slogger
|
|
2
2
|
#
|
3
3
|
# The wrapper for standard Ruby Syslog library.
|
4
4
|
#
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
:notice => 5,
|
13
|
-
:info => 6,
|
14
|
-
:debug => 7
|
15
|
-
}
|
16
|
-
|
17
|
-
FACILITY = {
|
18
|
-
:user => Syslog::LOG_USER,
|
19
|
-
:mail => Syslog::LOG_MAIL,
|
20
|
-
:daemon => Syslog::LOG_DAEMON,
|
21
|
-
:auth => Syslog::LOG_AUTH,
|
22
|
-
:syslog => Syslog::LOG_SYSLOG,
|
23
|
-
:lpr => Syslog::LOG_LPR,
|
24
|
-
:news => Syslog::LOG_NEWS,
|
25
|
-
:uucp => Syslog::LOG_UUCP,
|
26
|
-
:cron => Syslog::LOG_CRON,
|
27
|
-
:authpriv => Syslog::LOG_AUTHPRIV,
|
28
|
-
:ftp => Syslog::LOG_FTP,
|
29
|
-
:local0 => Syslog::LOG_LOCAL0,
|
30
|
-
:local1 => Syslog::LOG_LOCAL1,
|
31
|
-
:local2 => Syslog::LOG_LOCAL2,
|
32
|
-
:local3 => Syslog::LOG_LOCAL3,
|
33
|
-
:local4 => Syslog::LOG_LOCAL4,
|
34
|
-
:local5 => Syslog::LOG_LOCAL5,
|
35
|
-
:local6 => Syslog::LOG_LOCAL6,
|
36
|
-
:local7 => Syslog::LOG_LOCAL7
|
37
|
-
}
|
38
|
-
|
39
|
-
attr_reader :app_name, :severity, :facility
|
5
|
+
# Sample:
|
6
|
+
#
|
7
|
+
# slogger = Slogger::Logger.new "sample_app", :info, :local0
|
8
|
+
# slogger.info "A good info"
|
9
|
+
# slogger.debug "A deep info (oops! it'll not be logged)"
|
10
|
+
#
|
11
|
+
class Logger < Base
|
40
12
|
|
13
|
+
#
|
14
|
+
# Just sugars
|
15
|
+
#
|
16
|
+
SEVERITIES = ::Slogger::Base::SYSLOG_SEVERITIES
|
17
|
+
FACILITIES = ::Slogger::Base::SYSLOG_FACILITIES
|
18
|
+
|
41
19
|
#
|
42
20
|
# To build a Slogger::Logger instance.
|
43
21
|
#
|
44
22
|
# +app_name+:: The appliaction name to be logged
|
45
|
-
# +severity+:: The log severity: :
|
23
|
+
# +severity+:: The log severity: :emerg, :alert, :crit, :err, :warning, :notice,
|
46
24
|
# :info, or :debug. It can be changed at anytime.
|
47
|
-
# +facility+:: A typical syslog facility: :user, :mail, :daemon, :auth,
|
25
|
+
# +facility+:: A typical syslog facility: :kernel, :user, :mail, :daemon, :auth,
|
48
26
|
# :syslog, :lpr, :news, :uucp, :cron, :authpriv, :ftp,
|
49
27
|
# :local0, :local1, :local2, :local3, :local4, :local5,
|
50
28
|
# :local6, or :local7
|
@@ -52,57 +30,13 @@ module Slogger
|
|
52
30
|
# Raises an ArgumentError if app_name, severity, or facility is nil.
|
53
31
|
#
|
54
32
|
def initialize(app_name, severity, facility)
|
55
|
-
|
56
|
-
raise_argument_error_to_required_parameter "severity" unless severity
|
57
|
-
raise_argument_error_to_required_parameter "facility" unless facility
|
58
|
-
|
59
|
-
raise_argument_error_to_invalid_parameter "severity", "SEVERITY" unless SEVERITY[severity]
|
60
|
-
raise_argument_error_to_invalid_parameter "facility", "FACILITY" unless FACILITY[facility]
|
61
|
-
|
62
|
-
@app_name = app_name
|
63
|
-
@severity = severity
|
64
|
-
@severity_as_int = SEVERITY[severity]
|
65
|
-
@facility = facility
|
66
|
-
@facility_as_int = FACILITY[facility]
|
33
|
+
super app_name, severity, facility
|
67
34
|
end
|
68
35
|
|
69
|
-
|
36
|
+
SEVERITIES.each_key do |severity|
|
70
37
|
define_method severity do |message, &block|
|
71
|
-
log
|
38
|
+
log severity, message, &block
|
72
39
|
end
|
73
40
|
end
|
74
|
-
|
75
|
-
def severity=(value)
|
76
|
-
raise_argument_error_to_invalid_parameter "severity", "SEVERITY" unless SEVERITY[value]
|
77
|
-
|
78
|
-
@severity = value
|
79
|
-
@severity_as_int = SEVERITY[value]
|
80
|
-
end
|
81
|
-
|
82
|
-
private
|
83
|
-
|
84
|
-
def log(severity, message, &block)
|
85
|
-
return if SEVERITY[severity] > @severity_as_int
|
86
|
-
|
87
|
-
if block_given?
|
88
|
-
began_at = Time.now
|
89
|
-
|
90
|
-
yield
|
91
|
-
|
92
|
-
now = Time.now
|
93
|
-
end_at = now - began_at
|
94
|
-
message = "[#{end_at}s] #{message}"
|
95
|
-
end
|
96
|
-
|
97
|
-
Syslog.open(@app_name, Syslog::LOG_PID, @facility_as_int) { |s| s.send severity, message }
|
98
|
-
end
|
99
|
-
|
100
|
-
def raise_argument_error_to_required_parameter(param)
|
101
|
-
raise ArgumentError, "The '#{param}' parameter is required."
|
102
|
-
end
|
103
|
-
|
104
|
-
def raise_argument_error_to_invalid_parameter(param, options)
|
105
|
-
raise ArgumentError, "The '#{param}' parameter is invalid. Inspect the #{options} constant to know the options."
|
106
|
-
end
|
107
41
|
end
|
108
42
|
end
|
data/lib/slogger.rb
CHANGED
data/slogger.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "slogger/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "slogger"
|
7
|
+
s.version = Slogger::Version::STRING
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Leandro Silva"]
|
10
|
+
s.email = ["leandrodoze@gmail.com"]
|
11
|
+
s.homepage = "http://github.com/leandrosilva/slogger"
|
12
|
+
s.summary = %Q{Slogger is a Ruby library to help work with standard Ruby Syslog library.}
|
13
|
+
s.description = %Q{Slogger is a Ruby library to help work with standard Ruby Syslog library. Yeah! Just it.}
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
s.add_development_dependency "rspec", "~> 2.6.0.rc2"
|
21
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "/spec_helper")
|
2
|
+
|
3
|
+
describe Slogger::CommonLogger do
|
4
|
+
subject { Slogger::CommonLogger.new "test_app", :debug, :local0 }
|
5
|
+
|
6
|
+
describe "valid state" do
|
7
|
+
it "should have an app_name attribute" do
|
8
|
+
subject.app_name.should == "test_app"
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should have a severity attribute" do
|
12
|
+
subject.severity.should == :debug
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have a facility attribute" do
|
16
|
+
subject.facility.should == :local0
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "invalid state" do
|
21
|
+
it "should raise ArgumentError if doesn't have app_name" do
|
22
|
+
lambda { Slogger::CommonLogger.new nil, :debug, :local0 }.should raise_error
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should raise ArgumentError if doesn't have severity" do
|
26
|
+
lambda { Slogger::CommonLogger.new "test_app", nil, :local0 }.should raise_error
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should raise ArgumentError if doesn't have facility" do
|
30
|
+
lambda { Slogger::CommonLogger.new "test_app", :debug, nil }.should raise_error
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should raise ArgumentError if severity level is invalid" do
|
34
|
+
lambda { Slogger::CommonLogger.new "test_app", :junk, :local0 }.should raise_error
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should raise ArgumentError if facility is invalid" do
|
38
|
+
lambda { Slogger::CommonLogger.new "test_app", :describe, :junk }.should raise_error
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "severity setup" do
|
43
|
+
it "should be possible to change severity attribute" do
|
44
|
+
subject.severity.should be :debug
|
45
|
+
subject.severity = :warning
|
46
|
+
subject.severity.should be :warning
|
47
|
+
subject.severity = :info
|
48
|
+
subject.severity.should be :info
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should raise ArgumentError if try to change severity attribute to a invalid one" do
|
52
|
+
lambda { subject.severity = :junk }.should raise_error
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "logging" do
|
57
|
+
describe "when is in WARNING severity" do
|
58
|
+
subject { Slogger::CommonLogger.new "test_app", :warning, :local0 }
|
59
|
+
|
60
|
+
it "should log UNKNOW messages" do
|
61
|
+
Syslog.should_receive(:emerg).with(anything).and_return(Syslog)
|
62
|
+
|
63
|
+
subject.unknow "UNKNOW message"
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should log FATAL messages" do
|
67
|
+
Syslog.should_receive(:alert).with(anything).and_return(Syslog)
|
68
|
+
|
69
|
+
subject.fatal "FATAL message"
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should log ERROR messages" do
|
73
|
+
Syslog.should_receive(:err).with(anything).and_return(Syslog)
|
74
|
+
|
75
|
+
subject.error "ERROR message"
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should log WARNING messages" do
|
79
|
+
Syslog.should_receive(:warning).with(anything).and_return(Syslog)
|
80
|
+
|
81
|
+
subject.warning "WARNING message"
|
82
|
+
end
|
83
|
+
|
84
|
+
it "shouldn't log INFO messages" do
|
85
|
+
Syslog.should_not_receive(:info).with(anything).and_return(Syslog)
|
86
|
+
|
87
|
+
subject.info "INFO message"
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "but when severity is changed to INFO" do
|
91
|
+
it "should log INFO messages" do
|
92
|
+
subject.severity = :info
|
93
|
+
|
94
|
+
Syslog.should_receive(:info).with(anything).and_return(Syslog)
|
95
|
+
|
96
|
+
subject.info "INFO message"
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe "when a block is passed to log method" do
|
102
|
+
it "should add spent time to the message" do
|
103
|
+
subject.info "a block wrapped by log" do
|
104
|
+
sleep(2)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
data/spec/slogger/logger_spec.rb
CHANGED
@@ -58,15 +58,13 @@ describe Slogger::Logger do
|
|
58
58
|
subject { Slogger::Logger.new "test_app", :warning, :local0 }
|
59
59
|
|
60
60
|
it "should log WARNING messages" do
|
61
|
-
Syslog.
|
62
|
-
Syslog.should_receive(:warning).and_return(Syslog)
|
61
|
+
Syslog.should_receive(:warning).with(anything).and_return(Syslog)
|
63
62
|
|
64
63
|
subject.warning "WARNING message"
|
65
64
|
end
|
66
65
|
|
67
66
|
it "shouldn't log INFO messages" do
|
68
|
-
Syslog.
|
69
|
-
Syslog.should_not_receive(:info).and_return(Syslog)
|
67
|
+
Syslog.should_not_receive(:info).with(anything).and_return(Syslog)
|
70
68
|
|
71
69
|
subject.info "INFO message"
|
72
70
|
end
|
@@ -75,8 +73,7 @@ describe Slogger::Logger do
|
|
75
73
|
it "should log INFO messages" do
|
76
74
|
subject.severity = :info
|
77
75
|
|
78
|
-
Syslog.
|
79
|
-
Syslog.should_receive(:info).and_return(Syslog)
|
76
|
+
Syslog.should_receive(:info).with(anything).and_return(Syslog)
|
80
77
|
|
81
78
|
subject.info "INFO message"
|
82
79
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slogger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Leandro Silva
|
@@ -15,78 +15,57 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-04-29 00:00:00 -03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: rspec
|
23
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
|
-
requirements:
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 3
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
32
23
|
prerelease: false
|
33
|
-
|
34
|
-
requirement: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: bundler
|
37
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
38
25
|
none: false
|
39
26
|
requirements:
|
40
27
|
- - ~>
|
41
28
|
- !ruby/object:Gem::Version
|
42
|
-
hash:
|
29
|
+
hash: 15424049
|
43
30
|
segments:
|
44
|
-
-
|
45
|
-
-
|
31
|
+
- 2
|
32
|
+
- 6
|
46
33
|
- 0
|
47
|
-
|
48
|
-
prerelease: false
|
49
|
-
type: :development
|
50
|
-
requirement: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: jeweler
|
53
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
54
|
-
none: false
|
55
|
-
requirements:
|
56
|
-
- - ~>
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
hash: 7
|
59
|
-
segments:
|
60
|
-
- 1
|
61
|
-
- 5
|
34
|
+
- rc
|
62
35
|
- 2
|
63
|
-
version:
|
64
|
-
prerelease: false
|
36
|
+
version: 2.6.0.rc2
|
65
37
|
type: :development
|
66
|
-
|
38
|
+
version_requirements: *id001
|
67
39
|
description: Slogger is a Ruby library to help work with standard Ruby Syslog library. Yeah! Just it.
|
68
|
-
email:
|
40
|
+
email:
|
41
|
+
- leandrodoze@gmail.com
|
69
42
|
executables: []
|
70
43
|
|
71
44
|
extensions: []
|
72
45
|
|
73
|
-
extra_rdoc_files:
|
74
|
-
|
46
|
+
extra_rdoc_files: []
|
47
|
+
|
75
48
|
files:
|
49
|
+
- .document
|
50
|
+
- .gitignore
|
76
51
|
- Gemfile
|
77
52
|
- Gemfile.lock
|
78
53
|
- README.rdoc
|
79
54
|
- Rakefile
|
80
|
-
- VERSION
|
81
55
|
- lib/slogger.rb
|
56
|
+
- lib/slogger/base.rb
|
57
|
+
- lib/slogger/common_logger.rb
|
82
58
|
- lib/slogger/logger.rb
|
83
59
|
- lib/slogger/request_logger.rb
|
60
|
+
- lib/slogger/version.rb
|
61
|
+
- slogger.gemspec
|
62
|
+
- spec/slogger/common_logger_spec.rb
|
84
63
|
- spec/slogger/logger_spec.rb
|
85
64
|
- spec/spec_helper.rb
|
86
65
|
has_rdoc: true
|
87
66
|
homepage: http://github.com/leandrosilva/slogger
|
88
|
-
licenses:
|
89
|
-
|
67
|
+
licenses: []
|
68
|
+
|
90
69
|
post_install_message:
|
91
70
|
rdoc_options: []
|
92
71
|
|
@@ -118,5 +97,6 @@ signing_key:
|
|
118
97
|
specification_version: 3
|
119
98
|
summary: Slogger is a Ruby library to help work with standard Ruby Syslog library.
|
120
99
|
test_files:
|
100
|
+
- spec/slogger/common_logger_spec.rb
|
121
101
|
- spec/slogger/logger_spec.rb
|
122
102
|
- spec/spec_helper.rb
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.0.3
|