syslog_client 0.1.3 → 0.1.4

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.
@@ -1,13 +1,17 @@
1
1
  # encoding: utf-8
2
2
  require 'logglier'
3
+ require 'mongo'
3
4
  module SyslogClient
4
5
  class Base
5
- cattr_accessor :logger
6
- @@logger = Logglier.new('udp://192.168.2.180:8080')
6
+ cattr_accessor :logger, :store_name, :mongodb, :db_name
7
+ @@store_name = :syslog
8
+ @@logger = Logglier.new('udp://192.168.2.180:8080')
7
9
 
8
10
  class << self
9
11
  def send_log(options)
12
+ return if options.blank?
10
13
  infos = log_of_options(options)
14
+ return if infos.blank?
11
15
  infos = infos.is_a?(::Array) ? infos : [infos]
12
16
 
13
17
  now = Time.now.strftime('%Y-%m-%d %H:%M:%S')
@@ -17,9 +21,53 @@ module SyslogClient
17
21
  else
18
22
  info[:operation_time] = now
19
23
  end
20
- @@logger.info(info.to_json)
24
+ record_log(info)
21
25
  end
22
26
  end
27
+
28
+ def record_log(log)
29
+ case @@store_name.to_sym
30
+ when :syslog
31
+ @@logger.info(log.to_json)
32
+ when :mongodb
33
+ @@mongodb[@@db_name][log[:type].to_s.tableize].save(log)
34
+ end
35
+ end
36
+
37
+ def logger=(logglier)
38
+ unless logglier.is_a?(Logglier)
39
+ raise ArgumentError, 'The logger should be an instance of Logglier!'
40
+ end
41
+ @@logger = logglier
42
+ end
43
+
44
+ def store_name=(store)
45
+ case store.to_sym
46
+ when :syslog
47
+ @@store_name = store
48
+ @@logger ||= Logglier.new('udp://192.168.2.180:8080')
49
+ when :mongodb
50
+ @@store_name = store
51
+ @@mongodb ||= Mongo::Connection.new
52
+ @@db_name ||= 'test'
53
+ else
54
+ raise ArgumentError, "The store_name allowed in :syslog, :mongodb"
55
+ end
56
+ end
57
+
58
+ def mongodb=(connection)
59
+ unless connection.is_a?(Mongo::Connection)
60
+ raise ArgumentError, 'The mongodb should be an instance of Mongo::Connection!'
61
+ end
62
+ @@mongodb = connection
63
+ end
64
+
65
+ def db_name=(name)
66
+ unless name.is_a?(String) && name.present?
67
+ raise ArgumentError, 'db_name shoude be an presence instance of String!'
68
+ end
69
+ @@db_name = name
70
+ end
23
71
  end
24
72
  end
25
73
  end
@@ -5,13 +5,14 @@ module SyslogClient
5
5
  protected
6
6
  def log_of_options(options)
7
7
  _normalize_options(options)
8
- options.reverse_merge(:operator => get_operator(options[:operation])).merge(:type => 'deal_flow')
8
+ options.reverse_merge(:operator => get_operator(options[:operation]).to_s).merge(:type => 'deal_flow')
9
9
  end
10
10
 
11
11
  def _normalize_options(options)
12
12
  raise ArgumentError, 'options should be instance of Hash' unless options.is_a?(::Hash)
13
13
  options.symbolize_keys!
14
14
  options.assert_valid_keys(:deal_id, :operation, :operation_time, :operator, :result, :message )
15
+ options.map { |k, v| options[k] = v.to_s }
15
16
  end
16
17
 
17
18
  def get_operator(operation)
@@ -28,12 +28,14 @@ module SyslogClient
28
28
 
29
29
  def log_of_changes(options)
30
30
  options[:changes].inject([]) do |infos, change|
31
- infos << {
31
+ info = {
32
32
  :operation => change[0],
33
33
  :value => change[1][1],
34
34
  :value_was => change[1][0],
35
35
  :type => 'editor'
36
36
  }.merge(options.slice(:user_id, :reason, :entry_class, :entry_id, :operation_time))
37
+ info.map { |k, v| info[k] = v.to_s }
38
+ infos << info
37
39
  end
38
40
  end
39
41
  end
@@ -12,6 +12,7 @@ module SyslogClient
12
12
  raise ArgumentError, 'options should be instance of Hash' unless options.is_a?(::Hash)
13
13
  options.symbolize_keys!
14
14
  options.assert_valid_keys(:reason, :source, :deal_id, :tuan_shop_id, :shop_info_id, :operation_time)
15
+ options.map { |k, v| options[k] = v.to_s }
15
16
  end
16
17
  end
17
18
  end
@@ -1,3 +1,3 @@
1
1
  module SyslogClient
2
- Version = VERSION = '0.1.3'
2
+ Version = VERSION = '0.1.4'
3
3
  end
@@ -12,4 +12,5 @@ Gem::Specification.new do |s|
12
12
  s.require_paths = ["lib"]
13
13
  s.homepage = 'https://github.com/tumayun/syslog_client'
14
14
  s.add_dependency "logglier", "~> 0.2.8"
15
+ s.add_dependency "mongo", "1.7.1"
15
16
  end
metadata CHANGED
@@ -1,38 +1,64 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: syslog_client
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.3
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ hash: 19
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 4
10
+ version: 0.1.4
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - tumayun
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-12-28 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2012-12-28 00:00:00 +08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
15
22
  name: logglier
16
- requirement: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
17
25
  none: false
18
- requirements:
26
+ requirements:
19
27
  - - ~>
20
- - !ruby/object:Gem::Version
28
+ - !ruby/object:Gem::Version
29
+ hash: 7
30
+ segments:
31
+ - 0
32
+ - 2
33
+ - 8
21
34
  version: 0.2.8
22
35
  type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: mongo
23
39
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
40
+ requirement: &id002 !ruby/object:Gem::Requirement
25
41
  none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: 0.2.8
42
+ requirements:
43
+ - - "="
44
+ - !ruby/object:Gem::Version
45
+ hash: 9
46
+ segments:
47
+ - 1
48
+ - 7
49
+ - 1
50
+ version: 1.7.1
51
+ type: :runtime
52
+ version_requirements: *id002
30
53
  description: syslog client with tuan800
31
54
  email: tumayun.2010@gmail.com
32
55
  executables: []
56
+
33
57
  extensions: []
58
+
34
59
  extra_rdoc_files: []
35
- files:
60
+
61
+ files:
36
62
  - .gitignore
37
63
  - README.md
38
64
  - lib/syslog_client.rb
@@ -42,28 +68,39 @@ files:
42
68
  - lib/syslog_client/match_shop.rb
43
69
  - lib/syslog_client/version.rb
44
70
  - syslog_client.gemspec
71
+ has_rdoc: true
45
72
  homepage: https://github.com/tumayun/syslog_client
46
73
  licenses: []
74
+
47
75
  post_install_message:
48
76
  rdoc_options: []
49
- require_paths:
77
+
78
+ require_paths:
50
79
  - lib
51
- required_ruby_version: !ruby/object:Gem::Requirement
80
+ required_ruby_version: !ruby/object:Gem::Requirement
52
81
  none: false
53
- requirements:
54
- - - ! '>='
55
- - !ruby/object:Gem::Version
56
- version: '0'
57
- required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ hash: 3
86
+ segments:
87
+ - 0
88
+ version: "0"
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
90
  none: false
59
- requirements:
60
- - - ! '>='
61
- - !ruby/object:Gem::Version
62
- version: '0'
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ hash: 3
95
+ segments:
96
+ - 0
97
+ version: "0"
63
98
  requirements: []
99
+
64
100
  rubyforge_project:
65
- rubygems_version: 1.8.24
101
+ rubygems_version: 1.3.7
66
102
  signing_key:
67
103
  specification_version: 3
68
104
  summary: syslog client!
69
105
  test_files: []
106
+