私は自分の作業環境用に、ログ内のいくつかのキーワードを検索する小さなログ スニファ プログラムを作成しています。その部分は非常に単純ですが、私が実装しようとしている機能の 1 つは、ユーザーが今日からどれだけ遡りたいかを選択できるオプションです。 .
日付があり、今からのギャップとユーザー指定の範囲があります。範囲とマッチングを機能させる方法がわかりません。これが私のコードです:
require 'date'
### Get the logfile path from the user
p "What is the path to your log file?"
logfile = gets.chomp
### Get number of days user would like to go back
p "How many days back from today would you like to look?"
num_days = gets.chomp
############################################################################################
### Define Log class. Accept argumnet for path of the file. Called by foo = Log.new
############################################################################################
class Log
def scan_log(file_name, days)
error_exists = false
verify = false
apn = false
strict = false
days = days.to_i
# time = Time.now.strftime("%Y-%m-%d")
now = Date.today
days_ago = (now - days)
p now
p days_ago
File.open(file_name, "r") do |file_handle|
file_handle.each_line do |line|
if line =~ /Unable to verify signature/
verify = true
error_exists = true
end
if line =~ /gateway.push.apple.com/
apn = true
error_exists = true
end
if line =~ /Data truncation/
strict = true
error_exists = true
end
end
end
p "Verify signature error found" if verify
p "You have an APNS error" if apn
p "You have strict mode enabled" if strict
end
end
l = Log.new
l.scan_log(logfile, num_days)
私の考えでは、 file_handle.each_line do... の下のループが機能するでしょう。既存の if ステートメントをループに含め、ループはユーザーが設定した日付範囲をログの日付と一致させます。ログの形式は次のとおりです。
2013-04-17 15:10:42、767
タイムスタンプは気にしません。日付スタンプだけです。
あなたが助けることができればありがとう。