croque 0.5.3 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8b491279b9fcb905effb8312d1b2f47d96fc637a
4
- data.tar.gz: 6b2318fa03ebf1fab3c182ac7987d57726345a98
3
+ metadata.gz: 43b4e00f40d1bf501a490be5b58db0cca92eb260
4
+ data.tar.gz: 110503e639572246320bfc33dc994e1dab2aecbf
5
5
  SHA512:
6
- metadata.gz: 9d1d81982ec1612414140c3af96994d384c62494cb87b669d92e6444f3873406b3c72b2a47488958e709292a7c0375e10959289d4e25c6d776c8c052faee8e91
7
- data.tar.gz: c298bb81f6c53df48907432569e705e6bde0f761ebfefb8c2c287553f290750387baf1828bab361a7dba748bdb326ce91c1a600700f0808eda727f000e62f113
6
+ metadata.gz: 0710a4e309cad39c2d1cbe5fccd29dc9dca4cbc42300a8f936da0f320e28ba9a71889fe81303e5a605ebfd27acd0b9d950a16bce1be4d021208abb4c47f52dc3
7
+ data.tar.gz: 8360e2fff8d5a4e190c8e745235b191ce069c21ccb0a48431c0ca60d3e8bb3c5d386c36068a34ed729fcfbf24a1b2757a0a794eb1df108f8044c972e926b7047
data/.gitignore CHANGED
@@ -7,6 +7,7 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /log/croque.*
10
11
 
11
12
  # rspec failure tracking
12
13
  .rspec_status
data/README.md CHANGED
@@ -33,6 +33,7 @@ Croque.configure do |config|
33
33
  config.end_matcher = /\-\- : Completed/
34
34
  config.lower_time = 1000 # ms
35
35
  config.except_path_matcher = /\/assets\//
36
+ config.logger = Logger.new(config.log_dir_path.join("croque.#{Rails.env}.log"))
36
37
  end
37
38
  ```
38
39
 
data/lib/croque.rb CHANGED
@@ -19,7 +19,8 @@ module Croque
19
19
  include ActiveSupport::Configurable
20
20
  config_accessor :root_path, :log_dir_path, :store_path,
21
21
  :log_file_matcher, :hour_matcher, :matcher, :severity_matcher,
22
- :start_matcher, :end_matcher, :lower_time, :except_path_matcher
22
+ :start_matcher, :end_matcher, :lower_time, :except_path_matcher,
23
+ :logger
23
24
  end
24
25
 
25
26
  configure do |config|
@@ -34,6 +35,7 @@ module Croque
34
35
  config.end_matcher = /\-\- : Completed/
35
36
  config.lower_time = 1000 # ms
36
37
  config.except_path_matcher = /\/assets\//
38
+ config.logger = Logger.new(config.log_dir_path.join("croque.#{Rails.env}.log"))
37
39
  end
38
40
 
39
41
  class << self
@@ -12,16 +12,20 @@ module Croque
12
12
 
13
13
  def aggregate_per_hour(date)
14
14
  # scan each file
15
+ log("aggregate logs per hour on #{date} start")
15
16
  log_files.each do |file|
17
+ log("check skippable of #{file}")
16
18
  # check skippable
17
19
  next if skippable?(date, file)
20
+ log("aggregate logs of #{file}")
18
21
  # all lines
19
22
  linage = 1000
20
23
  wc_result = `wc -l #{file}`
21
- line_count = wc_result.match(/\d+/)[0]
24
+ line_count = wc_result.match(/\d+/)[0].to_i
22
25
  k = 1
23
26
  lines = []
24
- while (k-1)*linage < line_count.to_i
27
+ while (k-1)*linage < line_count
28
+ log("aggregate logs for #{(k-1)*linage}-#{k*linage} in #{line_count} on #{date}")
25
29
  fragment = `head -n #{k*1000} #{file} | tail -n #{linage}`
26
30
  fragment_lines = fragment.lines
27
31
  lines += fragment_lines.select do |line|
@@ -33,14 +37,18 @@ module Croque
33
37
  lines = lines
34
38
  hours.each do |hour|
35
39
  # craete csv file
40
+ log("create csv for #{date} #{hour} hour")
36
41
  create_csv(date, hour, lines)
37
42
  end
38
43
  end
44
+ log("aggregate logs per hour on #{date} end")
39
45
  end
40
46
 
41
47
  def generate_ranking(date)
48
+ log("generate ranking on #{date} start")
42
49
  array = []
43
50
  hours.each do |hour|
51
+ log("generate array for ranking in #{date} #{hour} hour")
44
52
  # csv data
45
53
  path = csv_path(date, hour)
46
54
  # next if no file
@@ -50,18 +58,20 @@ module Croque
50
58
  csv.to_a.each do |line|
51
59
  uuid = line[0]
52
60
  processing_time = line[1].to_f
53
- # next if processing_time < config.lower_time
54
61
  next if low?(processing_time)
55
62
  array << [date, hour, uuid, processing_time]
56
63
  end
57
64
  end
65
+ log("sort array for ranking on #{date}")
58
66
  # Processing Time Desc
59
67
  array = array.sort{ |a, b| b[3] <=> a[3] }
68
+ log("generate ranking csv on #{date}")
60
69
  # Generate CSV
61
70
  data = CSV.generate("", csv_option) do |csv|
62
71
  array.each{ |line| csv << line }
63
72
  end
64
73
  store_csv(ranking_path(date), data)
74
+ log("generate ranking on #{date} end")
65
75
  end
66
76
 
67
77
  def all
@@ -349,6 +359,10 @@ module Croque
349
359
  def low?(time)
350
360
  time < Croque.config.lower_time
351
361
  end
362
+
363
+ def log(message)
364
+ Croque.config.logger.try(:info, message)
365
+ end
352
366
  end
353
367
  end
354
368
  end
@@ -1,3 +1,3 @@
1
1
  module Croque
2
- VERSION = "0.5.3"
2
+ VERSION = "0.6.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: croque
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takuya Okuhara
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-03 00:00:00.000000000 Z
11
+ date: 2017-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails