处理Serv-U的超大型日志文件的方法

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:robert610
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Serv-U是一款windows系统下的FTP服务器软件,可以详细记录文件上传、下载、删除等信息。但有时Serv-U生成的日志文件大小超过文本编辑软件记事本、word的处理能力,导致不能在日志文件中查找所需的信息。该文提出一种解决方法,利用该方法可以快速从超大型日志文件中查找到所需的信息。
  关键词:Serv-U;FTP;日志文件;StreamReader;visual studio 2008
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)15-3551-02
  A Method to Process the Huge Logging Files of Serv-U
  CUI Zhi-yun1, ZHANG Mei-xin2
  (1.Office of Information and Network Management, Command College of the Chinese Armed Police Forces, Tianjin 300350; 2.Forensic Science Lab, the College of Political Science and Law, Hebei University, Baoding 071000, China)
  Abstract: Serv-U is a Windows-based FTP file server, which support the logging ofuploading, downloading and deleting of files in details. Sometimes, the size of logging file is too big to be opened by normal Text editor, such as notepad and word, cause it is hard to process. A method is proposed in this paper, which can be used to search informations in huge logging files.
  Key words: Serv-U; FTP; logging file; streamReader; visual studio 2008
  1 概述
  为了便于在局域网用户交换文件,我们在局域网中建立了FTP服务器。现在FTP服务器软件很多,我们经过比较后,最终选择使用Serv-U作为FTP服务器软件。之所以选择Serv-U,是因为其出众的安全性能及详细的日志记录功能。Serv-U支持实时多用户连接,匿名用户访问,可以基于IP对用户授予或者拒绝访问权限,支持文件上传和下载过程中的断点续传,能够设置硬盘空间配额和网络使用带宽,而且可以设置日志,详细记录用户的上传、下载、删除等所有操作,是一款优秀的FTP服务器软件[1]。
  为保障网络安全,我们要对详细记录FTP服务器中文件上传、下载、删除等信息。我们启用Serv-U的日志功能,在日志中详细记录了系统信息、安全信息、文件下载、文件上传和IP名称,并将记录保存在文件中。
  经过一段时间的运行后,在需要查看文件上传日志时,发现了一个问题: 设置Serv-U日志时,“自动新建日志文件”的周期选择的是“每月”,一个月的日志记录都保存在了同一个文件里面,一个日志文件的大小就达到2.6G。对于这么大的文件,常用的记事本、写字板根本无能为力,而Word也只能打开小于512 MB的文件[2]。
  如果能把大文件切割成小文件,就可以打开了。从网上搜索到一个文本切割程序,用它切割日志文件,结果程序出错,文件切割失败。即使切割成功,在一大堆切割后的文件中搜索需要的信息,也不是一件令人愉快的事情。
  既然日志中记录的是文件上传、删除等操作的信息,我们只需从日志中搜索出感兴趣的信息,比如,哪个用户上传或者删除了哪个文件,将这些信息抽取出来存为一个单独的文件就可以,而不需要浏览整个日志文件的内容。
  2 程序实现
  下面我们编写一个程序,从日志文件中搜索所需要的信息,将其保存到文本文件中。
  在Visual Studio 2008中,新建一个Projects,选择Visual C#下面的windows Forms Application模板,将工程命名为FtpLogAnalyze。
  在Form上添加一个文本框,命名为textBox1,添加一个按钮,命名为btnSearch,添加一个OpenFileDialog,命名为openFileDialog1。
  双击btnSearch按钮,在btnSearch按钮单击事件中,将文件框中输入的信息作为参数,调用SearchStrInFile方法。
  private void btnSearch_Click(object sender, EventArgs e)
  {SearchStrInFile(textBox1.Text.Trim());
  }
  方法SearchStrInFile的功能是利用openFileDialog对话框打开日志文件,从日志文件中搜索信息,并调用StreamWriter.WriteLine方法把包含所需信息的行写入到文本文件中[3-4],
  private void SearchStrInFile(string strToFind)
  {try
  {//利用OpenFileDialog打开日志文件
  if (openFileDialog1.ShowDialog() == DialogResult.OK)
  { //定义StreamReader对象,将打开的日志文件赋给StreamReader
  using(StreamReader sr = new StreamReader(openFileDialog1.FileName, Encoding.GetEncoding(936), true))
  {
  int i = 0;//记录日志文件的总行数
  string line = "";
  string str = "";
   //读取日志文件中的每一行
  while ((line = sr.ReadLine()) != null)
  {i ;
  //检查该行中是否包含我们要搜索的信息
  if (line.IndexOf(strToFind) > 0)
  {//如果该行包含要搜索的信息,将该行保存到字符串str中
  str = line;
  //换行
  str = System.Environment.NewLine;
  }}
  //将包含所需信息的行写入到文本文件中
  using (StreamWriter sw = new StreamWriter(i.ToString() ".txt"))
  {sw.WriteLine(str);
  }}
  }}
  catch (Exception ex)
  {// 显示错误信息
  MessageBox.Show(ex.Message);
  }}
  为了简单,我们把文本文件名设置为日志文件的行数,当然,我们也可以选择系统当前的日期时间或者其他的什么作为文本文件名。
  一般来说,新生成的文本文件会很小,使用记事本或者写字本就很容易打开。
  在Serv-U日志中,上传文件对应的记录内容为:
  STOR 上传的文件名
  如果我们想要查找是哪个用户上传了文件zhangsan.doc,在程序的文本框中输入:
  STOR zhangsan.doc
  然后单击搜索按钮,程序就会在日志文件夹中生成以日志文件行数命名的txt文件。在该文件中应该有类似的记录:
  [2] Mon 25Apr11 18:47:22 - (007117) STOR zhangsan.doc
  其中,Mon 25Apr11 18:47:22表示文件上传的日期、时间,(007117)中的数字是上传该文件的用户本次访问Serv-U服务器时的用户ID号,该ID号在同一个日志文件中对应一个用户,不会重复。然后再次在程序中搜索这个ID号,就可以把日志中该ID连接FTP服务器时的所有操作记录在文本文件中。其中,第一行,就有该ID对应的IP地址。如:
  [5] Mon 25Apr11 18:46:14 - (007117) Connected to 192.168.248.245 (Local address 192.168.254.16)
  192.168.254.16是Serv-U服务器的IP地址,192.168.248.245就是ID为007117的用户的IP地址。在局域网中,知道了用户的IP地址,再通过其他的技术手段,就很容易确定用户的真实身份了。
  如果想要查找是哪个用户删除了某个文件,只需要把搜索信息中的STOR改成DELE就可以了。通过这种方式,我们就能很快在庞大的日志中搜索到我们所需要的信息了。对于其他程序产生的大日志文件,也可以按照同样的思路进行分析。
  程序在中文windows 7,Visual Studio 2008中调试通过。
  参考文献:
  [1] Serv-U[EB/OL].百度百科,http://baike.baidu.com/view/537933.htm#sub537933.
  [2] Operating parameter limitations and specifications in Word[EB/OL].Microsoft Support,http://support.microsoft.com/kb/211489/en-us.
  [3] StreamReader Class[EB/OL].MSDN,http://msdn.microsoft.com/en-us/library/system.io.streamreader.aspx#Y165.
  [4] StreamWriter Class[EB/OL].MSDN,http://msdn.microsoft.com/en-us/library/system.io.streamwriter.aspx.
其他文献
商业环境在不断变化,企业如何在当前经济环境下所显露出来的“蛛丝马迹”中,寻找出适合自身企业发展的方式?
目的 观察脓毒症休克早期复苏患者应用微创方法监测血流动力学的效果,并与肺动脉漂浮导管(PAC)监测结果进行比较。方法 选取21例脓毒性休克患者,入院后立即经传感器连接微创血
目的比较咪达唑仑复合丙泊酚与咪达唑仑复合芬太尼对颅脑创伤患者过度通气的改善作用。方法选择颅脑创伤患者40例,随机分为A组、B组各20例。两组均给予咪达唑仑0.1 mg/kg静脉
中职计算机专业课程的教学是一项非常复杂的活动,其有效性的提高涉及到教学过程中的众多因素。文章以计算机专业课《计算机组装与维修》课程教学为例,探讨教师如何执行有效教
彩虹鲷又叫红罗非鱼,属热带鱼类,在我国大多地区不能自然越冬,必须进行越冬保种。彩虹鲷的越冬分为鱼种越冬和亲本越冬两种。鱼种越冬是将当年繁殖的彩虹鲷鱼苗,到10月左右还未长
节日临近,世界对虾供应前景迷茫9月30号,天气开始转凉,市场却增温,美国对虾买家评估供应形势,完成了节日最后一分钟的需求。夏季订单即时抵达。美国虾进口通常在这个月达到高峰,去
目的比较椎间孔镜下神经根减压松解术(BEIS术)和椎板间开窗髓核摘除术治疗单节段单侧腰椎间盘突出症的临床效果。方法回顾性分析85例单节段单侧腰椎间盘突出症患者的临床资料,
在社会主义条件下,正确处理人民内部矛盾始终是国家政治生活的主题。为此,毛泽东在上个世纪50年代创立了人民内部矛盾学说。进入改革开放时期,邓小平立足于新的实践对如何正确处
社会主义新农村建设是一个不断发展的动态过程,需要各种力量相互融合促进,其中第三种力量对新农村发展的重要作用不容忽视。第三种力量主要是指社会中间层组织、非营利组织及社