rails_log_watcher 0.0.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.
- data/README.md +33 -0
- data/lib/rails_log_watcher.rb +56 -0
- data/log4r.yml +18 -0
- data/rails_log_watcher.gemspec +17 -0
- metadata +75 -0
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
rails_log_watcher
|
2
|
+
=================
|
3
|
+
|
4
|
+
== Watch and analyze rails log, mark long time requests and sqls.
|
5
|
+
|
6
|
+
== Require Log4R and tested in rails 2 only.
|
7
|
+
|
8
|
+
## Install
|
9
|
+
|
10
|
+
$ sudo gem install log4r
|
11
|
+
$ sudo gem install rails_log_watcher
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
#enviroment.rb
|
16
|
+
gem "log4r"
|
17
|
+
gem "rails_log_watcher"
|
18
|
+
|
19
|
+
#config/development.rb or production.rb
|
20
|
+
config.logger = RailsLogWatcher.new(config.log_path)
|
21
|
+
config.logger.warn_request_secs = 5
|
22
|
+
config.logger.warn_secs = 2
|
23
|
+
config.log_level = :debug
|
24
|
+
|
25
|
+
#copy log4r.yml to config/log4r.yml
|
26
|
+
|
27
|
+
Copyright (c) 2012 MIT-LICENSE
|
28
|
+
|
29
|
+
Author : Wayne Deng
|
30
|
+
|
31
|
+
Web : http://blog.waynedeng.com
|
32
|
+
|
33
|
+
Email : wayne.deng.cn(AT).com
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'logger'
|
2
|
+
require 'log4r'
|
3
|
+
require 'log4r/yamlconfigurator'
|
4
|
+
require 'log4r/outputter/datefileoutputter'
|
5
|
+
|
6
|
+
class RailsLogWatcher < Logger
|
7
|
+
attr_accessor :warn_request_secs, :warn_secs
|
8
|
+
|
9
|
+
alias ext_old_format_message format_message
|
10
|
+
|
11
|
+
def format_message(severity, timestamp, progname, msg)
|
12
|
+
analyze_log_message timestamp, msg
|
13
|
+
ext_old_format_message severity, timestamp, progname, msg
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
|
18
|
+
def watcher_logger
|
19
|
+
unless @watcher_log
|
20
|
+
cfg = Log4r::YamlConfigurator
|
21
|
+
cfg.load_yaml_file(RAILS_ROOT + '/config/log4r.yml')
|
22
|
+
@watcher_log = Log4r::Logger['watch_log']
|
23
|
+
|
24
|
+
self.warn_request_secs ||= 10
|
25
|
+
self.warn_secs ||= 5
|
26
|
+
end
|
27
|
+
@watcher_log
|
28
|
+
end
|
29
|
+
|
30
|
+
def clean_str(str)
|
31
|
+
str.gsub(/\n/, '').lstrip
|
32
|
+
end
|
33
|
+
|
34
|
+
def analyze_log_message(timestamp, msg)
|
35
|
+
return if msg.blank?
|
36
|
+
|
37
|
+
if msg =~ /Processing (\w+)\#(\w+)/
|
38
|
+
watcher_logger.debug clean_str(msg)
|
39
|
+
end
|
40
|
+
|
41
|
+
if msg =~ /Completed in ([\d|.]+)ms/
|
42
|
+
complete_time = $1.to_f
|
43
|
+
if complete_time > self.warn_request_secs.to_f * 1000.0
|
44
|
+
watcher_logger.warn clean_str(msg)
|
45
|
+
else
|
46
|
+
watcher_logger.debug clean_str(msg)
|
47
|
+
end
|
48
|
+
elsif msg =~ /\(([\d|.]+)ms\)/
|
49
|
+
complete_time = $1.to_f
|
50
|
+
if complete_time > self.warn_secs.to_f * 1000.0
|
51
|
+
watcher_logger.warn clean_str(msg)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
data/log4r.yml
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
log4r_config:
|
2
|
+
# define all loggers ...
|
3
|
+
loggers:
|
4
|
+
- name : watch_log
|
5
|
+
level : DEBUG
|
6
|
+
trace : 'true'
|
7
|
+
outputters :
|
8
|
+
- watch_log
|
9
|
+
|
10
|
+
outputters:
|
11
|
+
- type: DateFileOutputter
|
12
|
+
name: watch_log
|
13
|
+
dirname: "log"
|
14
|
+
filename: "watch_log.log"
|
15
|
+
formatter:
|
16
|
+
date_pattern: '%Y-%m-%d %H:%M:%S'
|
17
|
+
pattern : '%d %l: %m '
|
18
|
+
type : PatternFormatter
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = %q{rails_log_watcher}
|
3
|
+
s.version = "0.0.1"
|
4
|
+
|
5
|
+
s.authors = ["Wayne Deng"]
|
6
|
+
s.date = %q{2012-09-28}
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.summary = "Watch and analyze rails log, mark long time requests and sqls."
|
9
|
+
s.description = "Watch and analyze rails log, mark long time requests and sqls."
|
10
|
+
s.email = %q{wayne.deng.cn@gmail.com}
|
11
|
+
s.homepage = %q{http://blog.waynedeng.com}
|
12
|
+
s.files = ["README.md", "lib/rails_log_watcher.rb", "log4r.yml", "rails_log_watcher.gemspec"]
|
13
|
+
s.require_paths = ["lib"]
|
14
|
+
s.requirements << 'log4r'
|
15
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "SqlLogic", "--main", "README"]
|
16
|
+
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rails_log_watcher
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Wayne Deng
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2012-09-28 00:00:00 +08:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: Watch and analyze rails log, mark long time requests and sqls.
|
23
|
+
email: wayne.deng.cn@gmail.com
|
24
|
+
executables: []
|
25
|
+
|
26
|
+
extensions: []
|
27
|
+
|
28
|
+
extra_rdoc_files: []
|
29
|
+
|
30
|
+
files:
|
31
|
+
- README.md
|
32
|
+
- lib/rails_log_watcher.rb
|
33
|
+
- log4r.yml
|
34
|
+
- rails_log_watcher.gemspec
|
35
|
+
has_rdoc: true
|
36
|
+
homepage: http://blog.waynedeng.com
|
37
|
+
licenses: []
|
38
|
+
|
39
|
+
post_install_message:
|
40
|
+
rdoc_options:
|
41
|
+
- --line-numbers
|
42
|
+
- --inline-source
|
43
|
+
- --title
|
44
|
+
- SqlLogic
|
45
|
+
- --main
|
46
|
+
- README
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
hash: 3
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
version: "0"
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
hash: 3
|
64
|
+
segments:
|
65
|
+
- 0
|
66
|
+
version: "0"
|
67
|
+
requirements:
|
68
|
+
- log4r
|
69
|
+
rubyforge_project:
|
70
|
+
rubygems_version: 1.5.2
|
71
|
+
signing_key:
|
72
|
+
specification_version: 3
|
73
|
+
summary: Watch and analyze rails log, mark long time requests and sqls.
|
74
|
+
test_files: []
|
75
|
+
|