Apache ログを読み込んで処理しようとしています。そのように私を参照するログ行を含む文字列分割関数を使用します。それらの行を削除したい。以下のコードは、私が持っていることを示しています。「127.0.0.1」のみが削除されますが、すべての「192.168.1.x」行が表示されます。
すべての分割文字列を削除するにはどうすればよいですか?
public void GetTheLog()
{
string path = "c:\\program files\\Zend\\apache2\\logs\\access.log";
string path2 = @"access.log";
int pos;
bool goodline = true;
string skipIPs = "127.0.0.1;192.168.1.100;192.168.1.101;192.168.1.106;67.240.13.70";
char[] splitchar = { ';' };
string[] wordarray = skipIPs.Split(splitchar);
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader reader = new StreamReader(fs);
TextWriter tw = new StreamWriter(path2);
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
// initialize goodline for each line of reader result
goodline = true;
for (j = 0; j < wordarray.Length; j++)
{
pos = -10;
srch = wordarray[j];
ln = line.Substring(0,srch.Length);
pos = ln.IndexOf(srch);
if (pos >= 0) goodline = false;
}
if (goodline == true)
{
tw.WriteLine(line);
listBox2.Items.Add(line);
}
}
// Clean up
reader.Close();
fs.Close();
listBox1.Items.Add(path2);
tw.Close();
}