syslogger 1.4.1 → 1.4.2

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.
data/README.rdoc CHANGED
@@ -17,6 +17,9 @@ specify the facility and the syslog options.
17
17
  # Will send all messages to the local0 facility, adding the process id in the message
18
18
  logger = Syslogger.new("app_name", Syslog::LOG_PID, Syslog::LOG_LOCAL0)
19
19
 
20
+ # Optionally split messages to the specified number of bytes
21
+ logger.max_octets = 480
22
+
20
23
  # Send messages that are at least of the Logger::INFO level
21
24
  logger.level = Logger::INFO # use Logger levels
22
25
 
data/lib/syslogger.rb CHANGED
@@ -4,9 +4,9 @@ require 'thread'
4
4
 
5
5
  class Syslogger
6
6
 
7
- VERSION = "1.4.1"
7
+ VERSION = "1.4.2"
8
8
 
9
- attr_reader :level, :ident, :options, :facility
9
+ attr_reader :level, :ident, :options, :facility, :max_octets
10
10
 
11
11
  MAPPING = {
12
12
  Logger::DEBUG => Syslog::LOG_DEBUG,
@@ -76,8 +76,8 @@ class Syslogger
76
76
 
77
77
  # Low level method to add a message.
78
78
  # +severity+:: the level of the message. One of Logger::DEBUG, Logger::INFO, Logger::WARN, Logger::ERROR, Logger::FATAL, Logger::UNKNOWN
79
- # +message+:: the message string.
80
- # If nil, the method will call the block and use the result as the message string.
79
+ # +message+:: the message string.
80
+ # If nil, the method will call the block and use the result as the message string.
81
81
  # If both are nil or no block is given, it will use the progname as per the behaviour of both the standard Ruby logger, and the Rails BufferedLogger.
82
82
  # +progname+:: optionally, overwrite the program name that appears in the log message.
83
83
  def add(severity, message = nil, progname = nil, &block)
@@ -85,14 +85,29 @@ class Syslogger
85
85
  @mutex.synchronize do
86
86
  Syslog.open(progname, @options, @facility) do |s|
87
87
  s.mask = Syslog::LOG_UPTO(MAPPING[@level])
88
- s.log(
89
- MAPPING[severity],
90
- clean(message || (block && block.call) || progname)
91
- )
88
+ communication = clean(message || (block && block.call) || progname)
89
+ if self.max_octets
90
+ buffer = ""
91
+ communication.bytes do |byte|
92
+ buffer.concat(byte)
93
+ if buffer.bytesize >= self.max_octets
94
+ s.log(MAPPING[severity],buffer)
95
+ buffer = ""
96
+ end
97
+ end
98
+ s.log(MAPPING[severity],buffer) unless buffer.empty?
99
+ else
100
+ s.log(MAPPING[severity],communication)
101
+ end
92
102
  end
93
103
  end
94
104
  end
95
105
 
106
+ # Set the max octets of the messages written to the log
107
+ def max_octets=(max_octets)
108
+ @max_octets = max_octets
109
+ end
110
+
96
111
  # Sets the minimum level for messages to be written in the log.
97
112
  # +level+:: one of <tt>Logger::DEBUG</tt>, <tt>Logger::INFO</tt>, <tt>Logger::WARN</tt>, <tt>Logger::ERROR</tt>, <tt>Logger::FATAL</tt>, <tt>Logger::UNKNOWN</tt>
98
113
  def level=(level)
@@ -132,8 +132,29 @@ describe "Syslogger" do
132
132
  syslog.should_receive(:log).with(Syslog::LOG_INFO, "my_app")
133
133
  @logger.add(Logger::INFO, nil)
134
134
  end
135
+
136
+ it "should split string over the max octet size" do
137
+ @logger.max_octets = 480
138
+ Syslog.should_receive(:open).
139
+ with("my_app", Syslog::LOG_PID, Syslog::LOG_USER).
140
+ and_yield(syslog=mock("syslog", :mask= => true))
141
+ syslog.should_receive(:log).with(Syslog::LOG_INFO, "a"*480).twice
142
+ @logger.add(Logger::INFO, "a"*960)
143
+ end
135
144
  end # describe "add"
136
145
 
146
+ describe "max_octets=" do
147
+ before(:each) do
148
+ @logger = Syslogger.new("my_app", Syslog::LOG_PID, Syslog::LOG_USER)
149
+ end
150
+
151
+ it "should set the max_octets for the logger" do
152
+ lambda { @logger.max_octets = 1 }.should change(@logger, :max_octets)
153
+ @logger.max_octets.should == 1
154
+ end
155
+
156
+ end
157
+
137
158
  describe "level=" do
138
159
  before(:each) do
139
160
  @logger = Syslogger.new("my_app", Syslog::LOG_PID, Syslog::LOG_USER)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: syslogger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-31 00:00:00.000000000 Z
12
+ date: 2013-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake