syslogger5424 0.5.0 → 0.5.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cb72907be740aa357f6e75ec6b6991e411495f61
4
- data.tar.gz: 3623fb6277835cf58248194a2f88ca35759d7f6a
3
+ metadata.gz: 5497cc4321c203d2828c59d18d79ed8e35d6ec69
4
+ data.tar.gz: 2610975569418bbed14c8d2dfe61e525fef5a936
5
5
  SHA512:
6
- metadata.gz: 54ba31de3c9cfaeb31f3efdd263bec371a339c4706d1ba6583a970dcbc5f687fd06b87d0a5ac5dcfa498579a3044b1726b58ea8361d17728b370a53df0345529
7
- data.tar.gz: c5c13c7e1d8fbcab763654ec95fb73d2ce63593ac4e35a1a82917dbeff3f803a3c11287c15388eb8594b41beb49090d425062e1f63f2fdf9446848b9ca7051b2
6
+ metadata.gz: 66105d5582b22820a619208cf844a9c97ca3156000b374aa77626f15fc1a848657cab6b6f3edb759e76f02f2ccfac8c0c3be7c7ab7f9411e66d93b5c82d06dce
7
+ data.tar.gz: a78949220b3e2e422ff6b5fc10dff8568a296e50a16c312bbf2700898b04901ddc5fc004cd8c3f6987862b4f134b9fd8a8960bda76ff0ba82e015c2efd6a0daa
@@ -1,7 +1,8 @@
1
1
  module SysLogger
2
2
  module Formatter
3
3
  class RFC5424 < ::Logger::Formatter
4
- attr_reader :msgid, :procid, :appname
4
+ attr_reader :msgid
5
+ attr_accessor :procid, :appname
5
6
 
6
7
  Format = "<%s>1 %s %s %s %s %s %s %s\n"
7
8
 
@@ -53,8 +54,7 @@ module SysLogger
53
54
  @hostname = Socket.gethostname
54
55
  @msgid = format_field(msgid, 32)
55
56
  @procid = procid
56
- @procid = format_field(procid || Process.pid.to_s, 128)
57
- @appname = format_field(appname, 48)
57
+ @appname = appname
58
58
 
59
59
  self.facility = facility || :local7
60
60
  end
@@ -88,7 +88,7 @@ module SysLogger
88
88
  structured_data["meta"]["x-counter"] = @counter
89
89
  sd = format_sdata(structured_data)
90
90
  Format % [pri, datetime.strftime("%FT%T.%6N%:z"), @hostname,
91
- @appname, format_field(@procid || Process.pid.to_s, 128),
91
+ format_field(@appname, 48), format_field(@procid || Process.pid.to_s, 128),
92
92
  message_id, sd, line]
93
93
  end
94
94
  if lines.size == 1
@@ -16,6 +16,22 @@ module SysLogger
16
16
  @default_formatter = SysLogger::Formatter::RFC5424.new
17
17
  end
18
18
 
19
+ def appname=(appname)
20
+ @default_formatter.appname = appname
21
+ end
22
+
23
+ def appname
24
+ @default_formatter.appname
25
+ end
26
+
27
+ def procid=(procid)
28
+ @default_formatter.procid = procid
29
+ end
30
+
31
+ def procid
32
+ @default_formatter.appname
33
+ end
34
+
19
35
  def <<(msg)
20
36
  # Logger's version of this just dumps the input without formatting. there
21
37
  # is never a case where we don't want to format the content to the syslog
@@ -3,10 +3,17 @@ require 'date'
3
3
 
4
4
  describe SysLogger::Formatter::RFC5424 do
5
5
  its(:msgid) { is_expected.to eq "-" }
6
- its(:procid) { is_expected.to eq Process.pid.to_s }
7
- its(:appname) { is_expected.to eq "-" }
6
+ its(:procid) { is_expected.to eq nil }
7
+ its(:appname) { is_expected.to eq nil }
8
8
  its(:facility) { is_expected.to eq 23 }
9
9
 
10
+ let(:test_date) { DateTime.new(2019, 10, 31, 20, 8) }
11
+ let(:test_hostname) { "host1sf" }
12
+
13
+ before do
14
+ allow(Socket).to receive(:gethostname).and_return(test_hostname)
15
+ end
16
+
10
17
  describe "#call" do
11
18
  it "generates Format" do
12
19
  expect(subject.call(::Logger::INFO, DateTime.now, "Prog", "Message")).
@@ -28,5 +35,33 @@ describe SysLogger::Formatter::RFC5424 do
28
35
  end
29
36
  expect(counter2).to be > counter1
30
37
  end
38
+
39
+ context "nil appname" do
40
+ it "formats correctly" do
41
+ expect(Socket).to receive(:gethostname).and_return(test_hostname)
42
+ expect(subject).to receive(:gen_xgroup).and_return(74901736)
43
+ expect(subject.call(::Logger::INFO, test_date, "Prog", "Message")).to eq (
44
+ "<190>1 2019-10-31T20:08:00.000000+00:00 host1sf - #{Process.pid.to_s} Prog [meta x-group=\"74901736\" x-counter=\"1\"] Message\n"
45
+ )
46
+ end
47
+ end
48
+
49
+ context "custom appname" do
50
+ it "formats correctly" do
51
+ subject.appname = "short-appname"
52
+ expect(subject).to receive(:gen_xgroup).and_return(74901736)
53
+ expect(subject.call(::Logger::INFO, test_date, "Prog", "Message")).to eq (
54
+ "<190>1 2019-10-31T20:08:00.000000+00:00 host1sf short-appname #{Process.pid.to_s} Prog [meta x-group=\"74901736\" x-counter=\"1\"] Message\n"
55
+ )
56
+ end
57
+
58
+ it "truncates to 48 bytes" do
59
+ subject.appname = "this-is-a-very-long-appname-with-many-parts-in-it-for-sure-yep"
60
+ expect(subject).to receive(:gen_xgroup).and_return(74901736)
61
+ expect(subject.call(::Logger::INFO, test_date, "Prog", "Message")).to eq (
62
+ "<190>1 2019-10-31T20:08:00.000000+00:00 host1sf this-is-a-very-long-appname-with-many-parts-in-it #{Process.pid.to_s} Prog [meta x-group=\"74901736\" x-counter=\"1\"] Message\n"
63
+ )
64
+ end
65
+ end
31
66
  end
32
67
  end
@@ -1,9 +1,28 @@
1
1
  describe SysLogger do
2
- let(:logger) { SysLogger.new(StringIO.new) }
2
+ let(:io) { StringIO.new }
3
+ let(:logger) { SysLogger.new(io) }
3
4
 
4
5
  describe '#new' do
5
6
  it 'creates a Logger' do
6
7
  expect(logger).to be_a SysLogger::Logger
7
8
  end
8
9
  end
10
+
11
+ describe "#appname" do
12
+ it 'returns nil if appname is nil' do
13
+ expect(logger.appname).to be_nil
14
+ logger.info('test')
15
+ expect(io.string).to match(
16
+ /<190>1.* #{Socket.gethostname} - #{Process.pid} - \[meta.*/
17
+ )
18
+ end
19
+
20
+ it 'overrides the appname' do
21
+ logger.appname = 'an-appname'
22
+ logger.info('test')
23
+ expect(io.string).to match(
24
+ /<190>1.* #{Socket.gethostname} an-appname #{Process.pid} - \[meta.*/
25
+ )
26
+ end
27
+ end
9
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: syslogger5424
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - EasyPost
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-29 00:00:00.000000000 Z
11
+ date: 2019-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mono_logger