syslog_client 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+