rubysl-syslog 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c18c5e6919582a916342b3d609e6a1c4f25f9a6a
4
- data.tar.gz: 7004baf274cb2e678080c438a41de7148114aacb
3
+ metadata.gz: bfebde7dcce150345a9455b71f9704eef695d9dd
4
+ data.tar.gz: 1307cccdf46e9a8f62f5b7188b0ac7f20568c13c
5
5
  SHA512:
6
- metadata.gz: 1e56cf512f8b2e0ae2888e66ba40f4d25011a5f1b6b8f4590a836df4bfba2541a8462f981d82029905d9832cba433d04db772b4d46128e68162a06f502c6770c
7
- data.tar.gz: 2c8c234d5e933871863fb9a03d27184ad3e6ad53142f88a15c2e028a0cec6ec33f290172650cb627582a18a3e9102ad1cd37139f7f3c251a105d269c98b76a12
6
+ metadata.gz: 94a117ef9961ac3aaaa0a1b747f273771b0eaa9b1ee760769a3a6bfc81d351cb684d20c3e3534a866485e52d0b74642b1960ae5d8d9f6dc2a2ba3c7be04fd191
7
+ data.tar.gz: a85cbefaf15ca5c869ef4eec24d263ba7a841ead120d53cea2289914f34b03bef5b44062cd7ac588d058d5eb014258975e120200a66ae405b65cc5270d586d6b
data/.travis.yml CHANGED
@@ -1,11 +1,12 @@
1
1
  language: ruby
2
- before_install:
3
- - rvm use $RVM --install --binary --fuzzy
4
- - gem update --system
5
- - gem --version
6
- - gem install rubysl-bundler
7
- - gem install rubysl-rake
8
- - rake
9
2
  env:
10
- - RVM=rbx-nightly-d21 RUBYLIB=lib
11
- script: bundle exec mspec spec
3
+ - RUBYLIB=lib:.
4
+ script: mspec spec
5
+ branches:
6
+ only:
7
+ - 1.0
8
+ - 2.0
9
+ rvm:
10
+ - 2.1.0
11
+ - rbx-2
12
+
@@ -1,5 +1,5 @@
1
1
  module RubySL
2
2
  module Syslog
3
- VERSION = "2.0.1"
3
+ VERSION = "2.1.0"
4
4
  end
5
5
  end
@@ -0,0 +1,208 @@
1
+ require 'syslog'
2
+ require 'logger'
3
+
4
+ ##
5
+ # Syslog::Logger is a Logger work-alike that logs via syslog instead of to a
6
+ # file. You can use Syslog::Logger to aggregate logs between multiple
7
+ # machines.
8
+ #
9
+ # By default, Syslog::Logger uses the program name 'ruby', but this can be
10
+ # changed via the first argument to Syslog::Logger.new.
11
+ #
12
+ # NOTE! You can only set the Syslog::Logger program name when you initialize
13
+ # Syslog::Logger for the first time. This is a limitation of the way
14
+ # Syslog::Logger uses syslog (and in some ways, a limitation of the way
15
+ # syslog(3) works). Attempts to change Syslog::Logger's program name after
16
+ # the first initialization will be ignored.
17
+ #
18
+ # === Example
19
+ #
20
+ # The following will log to syslogd on your local machine:
21
+ #
22
+ # require 'syslog/logger'
23
+ #
24
+ # log = Syslog::Logger.new 'my_program'
25
+ # log.info 'this line will be logged via syslog(3)'
26
+ #
27
+ # Also the facility may be set to specify the facility level which will be used:
28
+ #
29
+ # log.info 'this line will be logged using Syslog default facility level'
30
+ #
31
+ # log_local1 = Syslog::Logger.new 'my_program', Syslog::LOG_LOCAL1
32
+ # log_local1.info 'this line will be logged using local1 facility level'
33
+ #
34
+ #
35
+ # You may need to perform some syslog.conf setup first. For a BSD machine add
36
+ # the following lines to /etc/syslog.conf:
37
+ #
38
+ # !my_program
39
+ # *.* /var/log/my_program.log
40
+ #
41
+ # Then touch /var/log/my_program.log and signal syslogd with a HUP
42
+ # (killall -HUP syslogd, on FreeBSD).
43
+ #
44
+ # If you wish to have logs automatically roll over and archive, see the
45
+ # newsyslog.conf(5) and newsyslog(8) man pages.
46
+
47
+ class Syslog::Logger
48
+ # Default formatter for log messages.
49
+ class Formatter
50
+ def call severity, time, progname, msg
51
+ clean msg
52
+ end
53
+
54
+ private
55
+
56
+ ##
57
+ # Clean up messages so they're nice and pretty.
58
+
59
+ def clean message
60
+ message = message.to_s.strip
61
+ message.gsub!(/\e\[[0-9;]*m/, '') # remove useless ansi color codes
62
+ return message
63
+ end
64
+ end
65
+
66
+ ##
67
+ # The version of Syslog::Logger you are using.
68
+
69
+ VERSION = '2.0'
70
+
71
+ ##
72
+ # Maps Logger warning types to syslog(3) warning types.
73
+ #
74
+ # Messages from Ruby applications are not considered as critical as messages
75
+ # from other system daemons using syslog(3), so most messages are reduced by
76
+ # one level. For example, a fatal message for Ruby's Logger is considered
77
+ # an error for syslog(3).
78
+
79
+ LEVEL_MAP = {
80
+ ::Logger::UNKNOWN => Syslog::LOG_ALERT,
81
+ ::Logger::FATAL => Syslog::LOG_ERR,
82
+ ::Logger::ERROR => Syslog::LOG_WARNING,
83
+ ::Logger::WARN => Syslog::LOG_NOTICE,
84
+ ::Logger::INFO => Syslog::LOG_INFO,
85
+ ::Logger::DEBUG => Syslog::LOG_DEBUG,
86
+ }
87
+
88
+ ##
89
+ # Returns the internal Syslog object that is initialized when the
90
+ # first instance is created.
91
+
92
+ def self.syslog
93
+ @@syslog
94
+ end
95
+
96
+ ##
97
+ # Specifies the internal Syslog object to be used.
98
+
99
+ def self.syslog= syslog
100
+ @@syslog = syslog
101
+ end
102
+
103
+ ##
104
+ # Builds a methods for level +meth+.
105
+
106
+ def self.make_methods meth
107
+ level = ::Logger.const_get(meth.upcase)
108
+ eval <<-EOM, nil, __FILE__, __LINE__ + 1
109
+ def #{meth}(message = nil, &block)
110
+ add(#{level}, message, &block)
111
+ end
112
+
113
+ def #{meth}?
114
+ @level <= #{level}
115
+ end
116
+ EOM
117
+ end
118
+
119
+ ##
120
+ # :method: unknown
121
+ #
122
+ # Logs a +message+ at the unknown (syslog alert) log level, or logs the
123
+ # message returned from the block.
124
+
125
+ ##
126
+ # :method: fatal
127
+ #
128
+ # Logs a +message+ at the fatal (syslog err) log level, or logs the message
129
+ # returned from the block.
130
+
131
+ ##
132
+ # :method: error
133
+ #
134
+ # Logs a +message+ at the error (syslog warning) log level, or logs the
135
+ # message returned from the block.
136
+
137
+ ##
138
+ # :method: warn
139
+ #
140
+ # Logs a +message+ at the warn (syslog notice) log level, or logs the
141
+ # message returned from the block.
142
+
143
+ ##
144
+ # :method: info
145
+ #
146
+ # Logs a +message+ at the info (syslog info) log level, or logs the message
147
+ # returned from the block.
148
+
149
+ ##
150
+ # :method: debug
151
+ #
152
+ # Logs a +message+ at the debug (syslog debug) log level, or logs the
153
+ # message returned from the block.
154
+
155
+ Logger::Severity::constants.each do |severity|
156
+ make_methods severity.downcase
157
+ end
158
+
159
+ ##
160
+ # Log level for Logger compatibility.
161
+
162
+ attr_accessor :level
163
+
164
+ # Logging formatter, as a +Proc+ that will take four arguments and
165
+ # return the formatted message. The arguments are:
166
+ #
167
+ # +severity+:: The Severity of the log message.
168
+ # +time+:: A Time instance representing when the message was logged.
169
+ # +progname+:: The #progname configured, or passed to the logger method.
170
+ # +msg+:: The _Object_ the user passed to the log message; not necessarily a
171
+ # String.
172
+ #
173
+ # The block should return an Object that can be written to the logging
174
+ # device via +write+. The default formatter is used when no formatter is
175
+ # set.
176
+ attr_accessor :formatter
177
+
178
+ ##
179
+ # The facility argument is used to specify what type of program is logging the message.
180
+
181
+ attr_accessor :facility
182
+
183
+ ##
184
+ # Fills in variables for Logger compatibility. If this is the first
185
+ # instance of Syslog::Logger, +program_name+ may be set to change the logged
186
+ # program name. The +facility+ may be set to specify the facility level which will be used.
187
+ #
188
+ # Due to the way syslog works, only one program name may be chosen.
189
+
190
+ def initialize program_name = 'ruby', facility = nil
191
+ @level = ::Logger::DEBUG
192
+ @formatter = Formatter.new
193
+
194
+ @@syslog ||= Syslog.open(program_name)
195
+
196
+ @facility = (facility || @@syslog.facility)
197
+ end
198
+
199
+ ##
200
+ # Almost duplicates Logger#add. +progname+ is ignored.
201
+
202
+ def add severity, message = nil, progname = nil, &block
203
+ severity ||= ::Logger::UNKNOWN
204
+ @level <= severity and
205
+ @@syslog.log( (LEVEL_MAP[severity] | @facility), '%s', formatter.call(severity, Time.now, progname, (message || block.call)) )
206
+ true
207
+ end
208
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubysl-syslog
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Shirai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-25 00:00:00.000000000 Z
11
+ date: 2014-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi2-generators
@@ -99,6 +99,7 @@ files:
99
99
  - lib/rubysl/syslog/syslog.rb.ffi
100
100
  - lib/rubysl/syslog/version.rb
101
101
  - lib/syslog.rb
102
+ - lib/syslog/logger.rb
102
103
  - rubysl-syslog.gemspec
103
104
  - spec/alert_spec.rb
104
105
  - spec/close_spec.rb
@@ -142,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
143
  version: '0'
143
144
  requirements: []
144
145
  rubyforge_project:
145
- rubygems_version: 2.0.7
146
+ rubygems_version: 2.2.2
146
147
  signing_key:
147
148
  specification_version: 4
148
149
  summary: Ruby standard library syslog.
@@ -169,4 +170,3 @@ test_files:
169
170
  - spec/shared/log.rb
170
171
  - spec/shared/reopen.rb
171
172
  - spec/warning_spec.rb
172
- has_rdoc: