问题描述
多年不编码,别说思路了连基础语法都较劲……现因工作需要,要做一个WinForm工具来获取一组远程服务器中的多个应用站点的多个日志文本(.txt或.log),场景和要求如下:1.服务器信息、应用站点路径信息都配置在XML中来读取;2.各个应用站点中的日志文件生成周期和文件名都不同,无规律;3.设置手动选取的控件(如Datetimepicker)来设置要筛选的日志文件生成的时间范围;4.日志有两种,一种是错误日志,可直接获取;另一种是完整日志,需要判断日志文件中有没有关键字“Error”,若有则抓取;5.将所有各服务器各站点上筛选后得到的日志,抓取到本地。可能文字描述比较枯涩,我大概举个例子:有2台服务器10.1.1.1(1)和10.1.1.2(2),1上有2个应用站点,路径分别是d:App1logs*.txt,e:App2logger*.log。2上也有几个应用站点。这些信息是经常变化的,要配在XML里来读取。现在要求取3天以内的日志文件:1上App1的日志,1上APP2的内含“Error”关键字的日志,2上所有的日志。这些判断准则也可能会变化最好也配在XML里。取下来后存放在本地,按照1App1*.txt1App2*.log这样存放好。界面大概就是这样。请问有什么实现思路?或者更甚的有没有成型的类似代码?谢谢!
解决方案
解决方案二:
各个应用站点中的日志文件生成周期和文件名都不同,无规律那么就需要根据服务器IP和每个服务器日志的文件名规则来进行判断,需进行很多if判断。如果文件名不带有日期字符串,那么就需要读取文件的创建时间。获取日志的过程比较简单,就是打开远程文件再保存到本地。
解决方案三:
解决方案四:
规则做成脚本或者正则表达式放在配置中,日志用文件共享传输。
解决方案五:
引用1楼yaotomo的回复:
各个应用站点中的日志文件生成周期和文件名都不同,无规律那么就需要根据服务器IP和每个服务器日志的文件名规则来进行判断,需进行很多if判断。如果文件名不带有日期字符串,那么就需要读取文件的创建时间。获取日志的过程比较简单,就是打开远程文件再保存到本地。
是的是需要按照创建/修改时间来判别,但这个操作一定要在服务器端完成,因为日志量太多不能全部抓取到本地再甄别。请问这个该怎么做?
解决方案六:
做个服务程序放到服务器上,客户端将规则发到服务端,服务端提取文件后传回客户端