4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'app/jobs/log_analyzer_job.rb', line 4
def perform
Delayed::Worker.logger.debug('стартуем')
CONFIG[:logs].each do |name, path|
Delayed::Worker.logger.debug(path)
if File.exist?("#{Rails.root}#{path}")
log = File.read("#{Rails.root}#{path}")
log.scan(/(^I,[^\n]+\n(F,[^\n]+\n)+)/m).each do |error|
Delayed::Worker.logger.debug('получение времени ошибки')
datetime = (DateTime.parse error[0].match(/\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}/)[0]).to_s(:db)
Delayed::Worker.logger.debug(datetime)
Delayed::Worker.logger.debug('получение инфы ошибки')
e = error[0].gsub(/F,.+FATAL -- :\n/, '').gsub(/[FI],.+(FATAL|INFO) -- :\s/, '')
Delayed::Worker.logger.debug(e)
Delayed::Worker.logger.debug("занесение ошибки в #{name}")
Delayed::Worker.logger.debug(LogErrorType.find_by(value: name))
LogErrorType.find_by(value: name).log_errors.create(value: e, date: datetime)
end
File.truncate("#{Rails.root}#{path}", 0)
end
end
dj_log_path = "#{Rails.root}/log/dj.log"
if File.size(dj_log_path).to_i > 1538210
File.truncate(dj_log_path, 0)
end
Delayed::Backend::ActiveRecord::Job.where(queue: :log_analyzer).destroy_all
LogAnalyzerJob.set(wait_until: DateTime.now + CONFIG[:log_analyzer_timeout].minute).perform_later
end
|