0

質問: syslog (Linux サーバー) で特定のイベントの最初のエントリを検索し、コマンドを実行して (将来の開発)、情報をログに記録しようとしています。これに正しい方法でアプローチしたかどうかはわかりません。

問題: 最初に見つかった有効なエントリでループを終了する方法がわかりません。

import os
import commands
from time import strftime

file = "server.log.1" # sample log
nlogFile =("/home/nsoper/log/logfile_%s.txt") %(strftime("%Y_%m_%d_ %H_%M_%S")) # create logfile
caption="SN" # sample serach
condition2 = "java error"


F=open(file, 'r')
nF=open(nlogFile, 'a')
nF.write("output for results search:\n\n")


print(strftime("%Y_%m_%d_ %H_%M_%S"))


for line in F:
       for item in line.split("\n"):
                 if caption in item:
                        line1=item.strip()
                        if condition2 in line1:
                                print line1.strip()
                                nF.write(line1.strip()+"\n")
                                #command execute


nF.close()
F.close()
4

1 に答える 1

0

これは、Python 2.4(Linux prod envサーバー。Pythonをアップグレードできない/できない)を使用してこれを達成するために私が見つけた最良の方法です。この特定のケースでは、最後の行を取得して、別のループを使用して処理したいと思いました。

index=[]
con1 = "First Condition"
con2 = "Second Condition"

file=open("log.txt",'r')

print("Reading.. "+ file)
for line in F:
    for item in line.split("\n"):
            if con1 in item:
                    con1Line=item.strip()
                    if con2 in con1Line:
                            index.append(con1Line)
F.close()
l=index[-1]
print(l)
# do stuff now will value l
del index[:]
于 2012-08-24T01:22:06.977 に答える