1

私は自分の作業環境用に、ログ内のいくつかのキーワードを検索する小さなログ スニファ プログラムを作成しています。その部分は非常に単純ですが、私が実装しようとしている機能の 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

タイムスタンプは気にしません。日付スタンプだけです。

あなたが助けることができればありがとう。

4

2 に答える 2