lumberjack_syslog_device 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: fb001f870d1cfccdc29ec125be18dcff064b2d78e2731205db30704a9d2170c2
4
+ data.tar.gz: b9a73d61ec0ef1be9dd31cb35b36d405d265a8de5a2692480a3f98faef270c23
5
+ SHA512:
6
+ metadata.gz: 15851b8b81b2480ca0735173b9f9e2fa1b4d05147d6b4d64979c06a984df8adfd965fe384e4b8073c4b219bb6973948ada88a2aaae3a3647b8ed175ba683c4b7
7
+ data.tar.gz: 537be3b73a57c3d62abbcb31442c9d88242fa44e884b4b73739e8f72edb0272a383fa9ed0110bfda74a931f705367ca7bae97be137b460345ec33cda011923bd
@@ -0,0 +1,3 @@
1
+ # 2.0.0
2
+
3
+ * Add support for lumberjack 2.0 tags
@@ -0,0 +1,18 @@
1
+ # Lumberjack Syslog Device
2
+
3
+ [![Build Status](https://travis-ci.org/bdurand/lumberjack_syslog_device.svg?branch=master)](https://travis-ci.org/bdurand/lumberjack_syslog_device)
4
+ [![Maintainability](https://api.codeclimate.com/v1/badges/61785ec7e33012f55d65/maintainability)](https://codeclimate.com/github/bdurand/lumberjack_syslog_device/maintainability)
5
+
6
+ This gem provides a logging device for the [lumberjack](https://github.com/bdurand/lumberjack) gem that will log to syslog, the centralized system logging facility. See http://en.wikipedia.org/wiki/Syslog for more information on syslog.
7
+
8
+ ## Example Usage
9
+
10
+ ```ruby
11
+ require 'lumberjack_syslog_device'
12
+
13
+ device = Lumberjack::SyslogDevice.new
14
+ logger = Lumberjack::Logger.new(device)
15
+ logger.info("Write me to syslog!")
16
+ ```
17
+
18
+ See SyslogDevice for more details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'syslog'
2
4
  require 'lumberjack'
3
5
 
4
6
  module Lumberjack
5
7
  # This Lumberjack device logs output to syslog. There can only be one connection to syslog
6
8
  # open at a time. If you use syslog elsewhere in your application, you'll need to pass
7
- # <tt>:close_connection => true</tt> to the constructor. Otherwise, the connection will be kept
9
+ # :close_connection => true to the constructor. Otherwise, the connection will be kept
8
10
  # open between +write+ calls.
9
11
  class SyslogDevice < Device
10
12
  SEVERITY_MAP = {
@@ -15,57 +17,56 @@ module Lumberjack
15
17
  Severity::FATAL => Syslog::LOG_CRIT,
16
18
  Severity::UNKNOWN => Syslog::LOG_ALERT
17
19
  }
18
-
20
+
19
21
  PERCENT = '%'
20
22
  ESCAPED_PERCENT = '%%'
21
-
23
+
22
24
  @@lock = Mutex.new
23
-
24
-
25
+
25
26
  # Create a new SyslogDevice. The options control how messages are written to syslog.
26
27
  #
27
- # The template can be specified using the <tt>:template</tt> option. This can
28
+ # The template can be specified using the :template option. This can
28
29
  # either be a Proc or a string that will compile into a Template object.
29
30
  # If the template is a Proc, it should accept an LogEntry as its only argument and output a string.
30
31
  # If the template is a template string, it will be used to create a Template.
31
- # The default template is <tt>":message (#:unit_of_work_id)"</tt>.
32
+ # The default template is `:message (#:unit_of_work_id) :tags`.
32
33
  #
33
- # The <tt>:close_connection</tt> option can be used to specify that the connection to syslog should be
34
+ # The :close_connection option can be used to specify that the connection to syslog should be
34
35
  # closed after every +write+ call. This will slow down performance, but will allow you to use syslog
35
36
  # elsewhere in your application.
36
37
  #
37
- # The <tt>:options</tt> option will pass through options to syslog. The default is
38
- # <tt>Syslog::LOG_PID | Syslog::LOG_CONS</tt>. Available values for the bit map are:
39
- # * <tt>Syslog::LOG_CONS</tt> - Write directly to system console if there is an error while sending to system logger.
40
- # * <tt>Syslog::LOG_NDELAY</tt> - Open the connection immediately (normally, the connection is opened when the first message is logged).
41
- # * <tt>Syslog::LOG_NOWAIT</tt> - Don't wait for child processes that may have been created while logging the message.
42
- # * <tt>Syslog::LOG_ODELAY</tt> - The converse of LOG_NDELAY; opening of the connection is delayed.
43
- # * <tt>Syslog::LOG_PERROR</tt> - Print to stderr as well.
44
- # * <tt>Syslog::LOG_PID</tt> - Include PID with each message.
38
+ # The :options option will pass through options to syslog. The default is
39
+ # Syslog::LOG_PID | Syslog::LOG_CONS. Available values for the bit map are:
40
+ # * Syslog::LOG_CONS - Write directly to system console if there is an error while sending to system logger.
41
+ # * Syslog::LOG_NDELAY - Open the connection immediately (normally, the connection is opened when the first message is logged).
42
+ # * Syslog::LOG_NOWAIT - Don't wait for child processes that may have been created while logging the message.
43
+ # * Syslog::LOG_ODELAY - The converse of LOG_NDELAY; opening of the connection is delayed.
44
+ # * Syslog::LOG_PERROR - Print to stderr as well.
45
+ # * Syslog::LOG_PID - Include PID with each message.
45
46
  #
46
- # The <tt>:facility</tt> option will pass through a facility to syslog. Available values are
47
- # * <tt>Syslog::LOG_AUTH</tt>
48
- # * <tt>Syslog::LOG_AUTHPRIV</tt>
49
- # * <tt>Syslog::LOG_CRON</tt>
50
- # * <tt>Syslog::LOG_DAEMON</tt>
51
- # * <tt>Syslog::LOG_FTP</tt>
52
- # * <tt>Syslog::LOG_KERN</tt>
53
- # * <tt>Syslog::LOG_LOCAL0</tt> through <tt>Syslog::LOG_LOCAL7</tt>
54
- # * <tt>Syslog::LOG_LPR</tt>
55
- # * <tt>Syslog::LOG_MAIL</tt>
56
- # * <tt>Syslog::LOG_NEWS</tt>
57
- # * <tt>Syslog::LOG_SYSLOG</tt>
58
- # * <tt>Syslog::LOG_USER</tt> (default)
59
- # * <tt>Syslog::LOG_UUCP</tt>
47
+ # The :facility option will pass through a facility to syslog. Available values are
48
+ # * Syslog::LOG_AUTH
49
+ # * Syslog::LOG_AUTHPRIV
50
+ # * Syslog::LOG_CRON
51
+ # * Syslog::LOG_DAEMON
52
+ # * Syslog::LOG_FTP
53
+ # * Syslog::LOG_KERN
54
+ # * Syslog::LOG_LOCAL0 through Syslog::LOG_LOCAL7
55
+ # * Syslog::LOG_LPR
56
+ # * Syslog::LOG_MAIL
57
+ # * Syslog::LOG_NEWS
58
+ # * Syslog::LOG_SYSLOG
59
+ # * Syslog::LOG_USER (default)
60
+ # * Syslog::LOG_UUCP
60
61
  def initialize(options = {})
61
- @template = options[:template] || lambda{|entry| entry.unit_of_work_id ? "#{entry.message} (##{entry.unit_of_work_id})" : entry.message}
62
+ @template = options[:template] || default_template
62
63
  @template = Template.new(@template) if @template.is_a?(String)
63
64
  @syslog_options = options[:options] || (Syslog::LOG_PID | Syslog::LOG_CONS)
64
65
  @syslog_facility = options[:facility]
65
66
  @close_connection = options[:close_connection]
66
67
  @syslog_identity = nil
67
68
  end
68
-
69
+
69
70
  def write(entry)
70
71
  message = @template.call(entry).gsub(PERCENT, ESCAPED_PERCENT)
71
72
  @@lock.synchronize do
@@ -77,28 +78,51 @@ module Lumberjack
77
78
  end
78
79
  end
79
80
  end
80
-
81
+
81
82
  def close
82
83
  flush
83
84
  @lock.synchronize do
84
85
  @syslog.close if @syslog && @syslog.opened?
85
86
  end
86
87
  end
87
-
88
+
88
89
  private
89
-
90
+
90
91
  # Open syslog with ident set to progname. If it is already open with a different
91
92
  # ident, close it and reopen it.
92
93
  def open_syslog(progname) #:nodoc:
93
- if Syslog.opened?
94
- if (progname.nil? || Syslog.ident == progname) && @syslog_facility == Syslog.facility && @syslog_options == Syslog.options
95
- return Syslog
94
+ syslog_impl = syslog_implementation
95
+ if syslog_impl.opened?
96
+ if (progname.nil? || syslog_impl.ident == progname) && @syslog_facility == syslog_impl.facility && @syslog_options == syslog_impl.options
97
+ return syslog_impl
98
+ else
99
+ syslog_impl.close
96
100
  end
97
- Syslog.close
98
101
  end
99
- syslog = Syslog.open(progname, @syslog_options, @syslog_facility)
102
+ syslog = syslog_impl.open(progname, @syslog_options, @syslog_facility)
100
103
  syslog.mask = Syslog::LOG_UPTO(Syslog::LOG_DEBUG)
101
104
  syslog
102
105
  end
106
+
107
+ # Provided for testing purposes
108
+ def syslog_implementation #:nodoc:
109
+ Syslog
110
+ end
111
+
112
+ def default_template
113
+ lambda do |entry|
114
+ tags = entry.tags
115
+ if tags && !tags.empty?
116
+ message = String.new(entry.message)
117
+ message << " (#{entry.unit_of_work_id})" if entry.unit_of_work_id
118
+ tags.each do |name, value|
119
+ message << " [#{name}:#{value.inspect}]" unless name == Lumberjack::LogEntry::UNIT_OF_WORK_ID
120
+ end
121
+ message
122
+ else
123
+ entry.message
124
+ end
125
+ end
126
+ end
103
127
  end
104
128
  end
@@ -0,0 +1,33 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = 'lumberjack_syslog_device'
3
+ spec.version = File.read(File.expand_path("../VERSION", __FILE__)).strip
4
+ spec.authors = ['Brian Durand']
5
+ spec.email = ['bbdurand@gmail.com']
6
+
7
+ spec.summary = "A logging device for the lumberjack gem that writes log entries to syslog."
8
+ spec.homepage = "https://github.com/bdurand/lumberjack_syslog_device"
9
+ spec.license = "MIT"
10
+
11
+ # Specify which files should be added to the gem when it is released.
12
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
13
+ ignore_files = %w(
14
+ .gitignore
15
+ .travis.yml
16
+ Appraisals
17
+ Gemfile
18
+ Gemfile.lock
19
+ Rakefile
20
+ gemfiles/
21
+ spec/
22
+ )
23
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
+ `git ls-files -z`.split("\x0").reject{ |f| ignore_files.any?{ |path| f.start_with?(path) } }
25
+ end
26
+
27
+ spec.require_paths = ['lib']
28
+
29
+ spec.add_dependency "lumberjack", ">=1.1"
30
+
31
+ spec.add_development_dependency("rspec", ["~> 3.0"])
32
+ spec.add_development_dependency "rake"
33
+ end
metadata CHANGED
@@ -1,90 +1,91 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: lumberjack_syslog_device
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease:
6
- segments:
7
- - 1
8
- - 0
9
- - 0
10
- version: 1.0.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Brian Durand
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-02-11 00:00:00 -06:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
11
+ date: 2020-01-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
22
14
  name: lumberjack
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- hash: 15
30
- segments:
31
- - 1
32
- - 0
33
- version: "1.0"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '1.1'
34
20
  type: :runtime
35
- version_requirements: *id001
36
- description: A logging device for the lumberjack gem that writes log entries to syslog.
37
- email:
38
- - bdurand@embellishedvisions.com
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '1.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description:
56
+ email:
57
+ - bbdurand@gmail.com
39
58
  executables: []
40
-
41
59
  extensions: []
42
-
43
- extra_rdoc_files:
44
- - README.rdoc
45
- files:
46
- - README.rdoc
47
- - VERSION
48
- - Rakefile
60
+ extra_rdoc_files: []
61
+ files:
62
+ - CHANGE_LOG.md
49
63
  - MIT_LICENSE
64
+ - README.md
65
+ - VERSION
50
66
  - lib/lumberjack_syslog_device.rb
51
- - spec/lumberjack_syslog_device_spec.rb
52
- - spec/spec_helper.rb
53
- has_rdoc: true
54
- homepage: http://github.com/bdurand/lumberjack_mongo_device
55
- licenses: []
56
-
67
+ - lumberjack_syslog_device.gemspec
68
+ homepage: https://github.com/bdurand/lumberjack_syslog_device
69
+ licenses:
70
+ - MIT
71
+ metadata: {}
57
72
  post_install_message:
58
- rdoc_options:
59
- - --charset=UTF-8
60
- - --main
61
- - README.rdoc
62
- require_paths:
73
+ rdoc_options: []
74
+ require_paths:
63
75
  - lib
64
- required_ruby_version: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
67
78
  - - ">="
68
- - !ruby/object:Gem::Version
69
- hash: 3
70
- segments:
71
- - 0
72
- version: "0"
73
- required_rubygems_version: !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
76
83
  - - ">="
77
- - !ruby/object:Gem::Version
78
- hash: 3
79
- segments:
80
- - 0
81
- version: "0"
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
82
86
  requirements: []
83
-
84
- rubyforge_project:
85
- rubygems_version: 1.5.0
87
+ rubygems_version: 3.0.3
86
88
  signing_key:
87
- specification_version: 3
89
+ specification_version: 4
88
90
  summary: A logging device for the lumberjack gem that writes log entries to syslog.
89
91
  test_files: []
90
-
@@ -1,13 +0,0 @@
1
- Lumberjack Syslog Device
2
-
3
- This gem provides a logging device for the lumberjack gem that will log to syslog, the centralized system logging facility. See http://en.wikipedia.org/wiki/Syslog for more information on syslog.
4
-
5
- == Example Usage
6
-
7
- require 'lumberjack_syslog_device'
8
-
9
- device = Lumberjack::SyslogDevice.new
10
- logger = Lumberjack::Logger.new(device)
11
- logger.info("Write me to syslog!")
12
-
13
- See SyslogDevice for more details.
data/Rakefile DELETED
@@ -1,56 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'rake/gempackagetask'
4
- require 'rake/rdoctask'
5
-
6
- desc 'Default: run unit tests.'
7
- task :default => :test
8
-
9
- desc 'RVM likes to call it tests'
10
- task :tests => :test
11
-
12
- begin
13
- require 'rspec'
14
- require 'rspec/core/rake_task'
15
- desc 'Run the unit tests'
16
- RSpec::Core::RakeTask.new(:test)
17
- rescue LoadError
18
- task :test do
19
- STDERR.puts "You must have rspec 2.0 installed to run the tests"
20
- end
21
- end
22
-
23
- desc 'Generate rdoc.'
24
- Rake::RDocTask.new(:rdoc) do |rdoc|
25
- rdoc.rdoc_dir = 'rdoc'
26
- rdoc.options << '--title' << 'Lumberjack Syslog Device' << '--line-numbers' << '--inline-source' << '--main' << 'README.rdoc'
27
- rdoc.rdoc_files.include('README.rdoc')
28
- rdoc.rdoc_files.include('lib/**/*.rb')
29
- end
30
-
31
- namespace :rbx do
32
- desc "Cleanup *.rbc files in lib directory"
33
- task :delete_rbc_files do
34
- FileList["lib/**/*.rbc"].each do |rbc_file|
35
- File.delete(rbc_file)
36
- end
37
- nil
38
- end
39
- end
40
-
41
- spec_file = File.expand_path('../lumberjack_syslog_device.gemspec', __FILE__)
42
- if File.exist?(spec_file)
43
- spec = eval(File.read(spec_file))
44
-
45
- Rake::GemPackageTask.new(spec) do |p|
46
- p.gem_spec = spec
47
- end
48
- Rake.application["package"].prerequisites.unshift("rbx:delete_rbc_files")
49
-
50
- desc "Release to rubygems.org"
51
- task :release => :package do
52
- require 'rake/gemcutter'
53
- Rake::Gemcutter::Tasks.new(spec).define
54
- Rake::Task['gem:push'].invoke
55
- end
56
- end
@@ -1,119 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Lumberjack::SyslogDevice do
4
-
5
- let(:time){ Time.parse("2011-02-01T18:32:31Z") }
6
- let(:entry){ Lumberjack::LogEntry.new(time, Lumberjack::Severity::WARN, "message 1", "lumberjack_syslog_device_spec", 12345, "ABCD") }
7
-
8
- context "open connecton" do
9
- it "should be able to specify syslog options" do
10
- syslog = MockSyslog.new
11
- device = Lumberjack::SyslogDevice.new(:options => Syslog::LOG_CONS)
12
- Syslog.should_receive(:open).with(entry.progname, Syslog::LOG_CONS, nil).and_return(syslog)
13
- device.write(entry)
14
- end
15
-
16
- it "should be able to specify a syslog facility" do
17
- syslog = MockSyslog.new
18
- device = Lumberjack::SyslogDevice.new(:facility => Syslog::LOG_FTP)
19
- Syslog.should_receive(:open).with(entry.progname, (Syslog::LOG_PID | Syslog::LOG_CONS), Syslog::LOG_FTP).and_return(syslog)
20
- device.write(entry)
21
- end
22
-
23
- it "should log all messages since the logger will filter them by severity" do
24
- syslog = MockSyslog.new
25
- device = Lumberjack::SyslogDevice.new
26
- Syslog.should_receive(:open).with(entry.progname, (Syslog::LOG_PID | Syslog::LOG_CONS), nil).and_return(syslog)
27
- device.write(entry)
28
- syslog.mask.should == Syslog::LOG_UPTO(Syslog::LOG_DEBUG)
29
- end
30
- end
31
-
32
- context "logging" do
33
- it "should log entries to syslog" do
34
- entry.unit_of_work_id = nil
35
- device = Lumberjack::SyslogDevice.new
36
- messages = read_syslog do
37
- device.write(entry)
38
- end
39
- messages.first.should include("message 1")
40
- end
41
-
42
- it "should log output to syslog with the unit of work id if it exists" do
43
- device = Lumberjack::SyslogDevice.new
44
- messages = read_syslog do
45
- device.write(entry)
46
- end
47
- messages.first.should include("message 1 (#ABCD)")
48
- end
49
-
50
- it "should be able to specify a string template" do
51
- device = Lumberjack::SyslogDevice.new(:template => ":unit_of_work_id - :message")
52
- messages = read_syslog do
53
- device.write(entry)
54
- end
55
- messages.first.should include("ABCD - message 1")
56
- end
57
-
58
- it "should be able to specify a proc template" do
59
- device = Lumberjack::SyslogDevice.new(:template => lambda{|e| e.message.upcase})
60
- messages = read_syslog do
61
- device.write(entry)
62
- end
63
- messages.first.should include("MESSAGE 1")
64
- end
65
-
66
- it "should properly handle percent signs in the syslog message" do
67
- device = Lumberjack::SyslogDevice.new
68
- entry.message = "message 100%"
69
- messages = read_syslog do
70
- device.write(entry)
71
- end
72
- messages.first.should include("message 100% (#ABCD)")
73
- end
74
-
75
- it "should convert lumberjack severities to syslog severities" do
76
- syslog = MockSyslog.new
77
- device = Lumberjack::SyslogDevice.new
78
- Syslog.stub!(:open).and_return(syslog)
79
- syslog.should_receive(:log).with(Syslog::LOG_DEBUG, "debug")
80
- syslog.should_receive(:log).with(Syslog::LOG_INFO, "info")
81
- syslog.should_receive(:log).with(Syslog::LOG_WARNING, "warn")
82
- syslog.should_receive(:log).with(Syslog::LOG_ERR, "error")
83
- syslog.should_receive(:log).with(Syslog::LOG_CRIT, "fatal")
84
- device.write(Lumberjack::LogEntry.new(Time.now, Lumberjack::Severity::DEBUG, "debug", "lumberjack_syslog_device_spec", 12345, nil))
85
- device.write(Lumberjack::LogEntry.new(Time.now, Lumberjack::Severity::INFO, "info", "lumberjack_syslog_device_spec", 12345, nil))
86
- device.write(Lumberjack::LogEntry.new(Time.now, Lumberjack::Severity::WARN, "warn", "lumberjack_syslog_device_spec", 12345, nil))
87
- device.write(Lumberjack::LogEntry.new(Time.now, Lumberjack::Severity::ERROR, "error", "lumberjack_syslog_device_spec", 12345, nil))
88
- device.write(Lumberjack::LogEntry.new(Time.now, Lumberjack::Severity::FATAL, "fatal", "lumberjack_syslog_device_spec", 12345, nil))
89
- end
90
-
91
- it "should log messages with the syslog ident set to the progname" do
92
- device = Lumberjack::SyslogDevice.new
93
- messages = read_syslog("lumberjack_syslog_device") do
94
- device.write(entry)
95
- entry.progname = "spec_for_lumberjack_syslog_device"
96
- entry.message = "new message"
97
- device.write(entry)
98
- end
99
- messages.first.should include("lumberjack_syslog_device_spec")
100
- messages.last.should include("spec_for_lumberjack_syslog_device")
101
- end
102
-
103
- it "should keep open the syslog connection by default" do
104
- device = Lumberjack::SyslogDevice.new
105
- messages = read_syslog do
106
- device.write(entry)
107
- Syslog.should be_opened
108
- end
109
- end
110
-
111
- it "should close the syslog connection if :close_connection is true" do
112
- device = Lumberjack::SyslogDevice.new(:close_connection => true)
113
- messages = read_syslog do
114
- device.write(entry)
115
- Syslog.should_not be_opened
116
- end
117
- end
118
- end
119
- end
@@ -1,52 +0,0 @@
1
- require File.expand_path("../../lib/lumberjack_syslog_device.rb", __FILE__)
2
-
3
- SYSLOG_FILE = ENV["SYSLOG_FILE"] || "/var/log/system.log"
4
-
5
- # Round about way of reading syslog by following it using the command line and looking in the output.
6
- def read_syslog(progname = "lumberjack_syslog_device_spec")
7
- message_id = rand(0xFFFFFFFFFFFFFFFF)
8
- Syslog.open("lumberjack_syslog_device_spec") do |syslog|
9
- syslog.mask = Syslog::LOG_UPTO(Syslog::LOG_DEBUG)
10
- syslog.warning("************** start #{message_id}")
11
- end
12
-
13
- yield
14
-
15
- Syslog.close if Syslog.opened?
16
- Syslog.open("lumberjack_syslog_device_spec") do |syslog|
17
- syslog.mask = Syslog::LOG_UPTO(Syslog::LOG_DEBUG)
18
- syslog.warning("************** end #{message_id}")
19
- end
20
-
21
- # Loop over the syslog file until the start and end markers are found
22
- 8.times do
23
- retval = nil
24
- lines = `tail -500 #{SYSLOG_FILE}`.split("\n")
25
- lines.each do |line|
26
- if line.include?("start #{message_id}")
27
- retval = []
28
- elsif line.include?("end #{message_id}")
29
- return retval
30
- else
31
- retval << line if retval && line.include?(progname)
32
- end
33
- end
34
- break if retval
35
- sleep(0.25)
36
- end
37
- raise "could not find message logged to #{SYSLOG_FILE}"
38
- end
39
-
40
- class MockSyslog
41
- attr_accessor :mask
42
- attr_reader :ident, :options, :facility
43
-
44
- def open(ident, options, facility)
45
- @ident = ident
46
- @options = options
47
- @facility = facility
48
- end
49
-
50
- def log(*args)
51
- end
52
- end