代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
CSharp
】
IIS6.0日志文件分析代码_2生成访问记录到文本文件
作者:
xqf222
/ 发布于
2014/2/25
/
562
//IS6.0日志文件分析代码_2生成访问记录到文本文件:解决掉了上一方式中打开LOG文件按行读取反映慢,卡死现象.进一步升级方向;将文本文件的内容导入数据库中.将对比访问字段FIELDS内容名称.写入数据库对应字段中.
//IS6.0日志文件分析代码_2生成访问记录到文本文件:解决掉了上一方式中打开LOG文件按行读取反映慢,卡死现象.进一步升级方向;将文本文件的内容导入数据库中.将对比访问字段FIELDS内容名称.写入数据库对应字段中. private void button3_Click(object sender, System.EventArgs e) { this.button3.Enabled=false; this.richTextBox1.Text=""; //调用打开文件对话框获取要打开的日志文件Log文件,获取文件所在路径名称 OpenFileDialog opd = new OpenFileDialog(); opd.InitialDirectory = @"C:/WINDOWS/system32/LogFiles"; opd.Filter = "日志文档(*.log)|*.log|Word文档(*.doc)|*.doc|文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文档(*.*)|*.*"; opd.FilterIndex = 1; if (opd.ShowDialog() == DialogResult.OK && opd.FileName.Length > 0) { try { BinaryFileType=opd.FileName.Substring(opd.FileName.LastIndexOf(".")+1).ToUpper(); BinaryFileName=opd.FileName.Substring(opd.FileName.LastIndexOf("//")+1).ToUpper(); BinaryFilePath=opd.FileName; FileStream fs = new FileStream(opd.FileName, FileMode.OpenOrCreate, FileAccess.Read); BinaryFileLength=(int)fs.Length; StreamReader myStreamReader=new StreamReader(fs);//使用StreamReader类来读取文件 myStreamReader.BaseStream.Seek(0,SeekOrigin.Begin);//从数据流中读取每一行,直到文件的最后一行,并在richTextBox1中显示出内容 string strLine=myStreamReader.ReadLine(); int LineSoftware=0; int LineVersion=0; int LineDate=0; int LineFields=0; int LineContent=0; ArrayList MySoftwareArray=new ArrayList(); ArrayList MyVersionArray=new ArrayList(); ArrayList MyDateArray=new ArrayList(); ArrayList MyFieldsArray=new ArrayList(); ArrayList MyContentArray=new ArrayList(); ArrayList MyLineArray=new ArrayList(); while(strLine!=null) { if(strLine.Substring(0,10)=="#Software:") { LineSoftware+=1; MySoftwareArray.Add(strLine.Substring(10,strLine.Length-10)); } else { if(strLine.Substring(0,9)=="#Version:") { LineVersion+=1; MyVersionArray.Add(strLine.Substring(9,strLine.Length-9)); } else { if(strLine.Substring(0,6)=="#Date:") { LineDate+=1; MyDateArray.Add(strLine.Substring(6,strLine.Length-6)); } else { if(strLine.Substring(0,8)=="#Fields:") { LineFields+=1; MyFieldsArray.Add(strLine.Substring(9,strLine.Length-9)); } else { MyContentArray.Add(strLine); if(splitLineNumber!=LineSoftware) { MyLineArray.Add(LineContent); splitLineNumber+=1; } LineContent+=1; } } } } strLine=myStreamReader.ReadLine(); totalLogFileLine+=1; } myStreamReader.Close();//关闭此StreamReader对象 fs.Close(); //定义记录字段名称 //定义记录字段内容 ArrayList LogFieldsTitleArray=new ArrayList(); string strt=MyFieldsArray[0].ToString(); string[] tArray=strt.Split(' '); int totalFieldsLength=tArray.Length; string[,] LogArrayList=new string[LineContent,totalFieldsLength]; for(int i=0;i<LineContent;i++) { string strRecord=MyContentArray[i].ToString(); //this.richTextBox1.Text+="第"+i.ToString()+"行:"+strRecord+"/n"; string[] recordArray=strRecord.Split(' '); int j=0; foreach(string record in recordArray) { LogArrayList[i,j]=record.ToString(); j+=1; } } //测试将数组中的记录字段内容写入文本文件 string outpath = BinaryFilePath.Insert(BinaryFilePath.LastIndexOf('.'), "-back"); FileStream aFile = new FileStream(outpath,FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(aFile); for(int m=0;m<LineContent;m++) { for(int n=0;n<totalFieldsLength;n++) { sw.WriteLine(LogArrayList[m,n]); } } sw.Close(); //清除掉所有数组内容 MySoftwareArray=null; MyVersionArray=null; MyDateArray=null; MyFieldsArray=null; MyContentArray=null; MyLineArray=null; LogFieldsTitleArray=null; LogArrayList=null; //定义记录字段名称 //定义记录字段内容 /* * 单独分析一条记录实例 ArrayList LogFieldsTitleArray=new ArrayList(); ArrayList LogFieldsContentArray=new ArrayList(); string strt="#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status"; string[] tArray=strt.Substring(9,strt.Length-9).Split(' '); foreach(string i in tArray) { LogFieldsTitleArray.Add(i.ToString()); } //string strc="2007-06-16 00:14:19 W3SVC1 218.16.120.31 GET /ArticleShow.asp ID=276 80 - 128.194.135.94 IRLbot/3.0+(compatible;+MSIE+6.0;+http://irl.cs.tamu.edu/crawler) 200 0 0"; string strc="2007-06-16 00:20:55 W3SVC1 218.16.120.31 GET /robots.txt - 80 - 65.55.209.134 msnbot/1.0+(+http://search.msn.com/msnbot.htm) 404 0 2"; string[] cArray=strc.Split(' '); foreach(string j in cArray) { LogFieldsContentArray.Add(j.ToString()); } for(int k=0;k<LogFieldsTitleArray.Count;k++) { this.richTextBox1.Text+=LogFieldsTitleArray[k].ToString()+"字段内容是:" +LogFieldsContentArray[k].ToString()+ "/n"; } */ this.textBox2.Text=BinaryFilePath; this.textBox3.Text=LineContent.ToString(); this.textBox4.Text=totalLogFileLine.ToString(); this.textBox5.Text=BinaryFileLength.ToString(); } catch(Exception ex) { MessageBox.Show(ex.Message,"错误"); } } this.button3.Enabled=true; }
试试其它关键字
IIS6.0日志
同语言下
.
文件IO 操作类库
.
Check图片类型[JPEG(.jpg 、.jpeg),TIF,GIF,BMP,PNG,P
.
机器名和IP取得(IPV4 IPV6)
.
Tiff转换Bitmap
.
linqHelper
.
MadieHelper.cs
.
RegHelper.cs
.
如果关闭一个窗体后激活另一个窗体的事件或方法
.
创建日志通用类
.
串口辅助开发类
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
xqf222
贡献的其它代码
(
82
)
.
VB编写的登录局域网内的sql2000数据库服务器
.
ASP .NET登录界面用户验证码
.
VB操作ACCESS数据库
.
批量发送邮件程序
.
批量抓取网页代码中的HTTP和邮件地址
.
禁止站外提交参数测试
.
FTP网站文件到本地的
.
调用对应的应用程打开文件
.
抓取邮件内容解析
.
保存文件时候的弹出选择要保存的文件夹带新建文件夹效
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3