c++文件读取(二)---简单日志定位系统 附源码

简单的日志定位系统----读取exe执行文件路径下指定格式的文件内容,根据日志关键字输出指定结果,实现简单问题定位步骤很简单:1、clock()函数,用来计时,看性能几何2、动态获取当前执行文件路径3、分割‘路径‘字符串,再重新组装,boost库有现成的split函数,也可以用stroke函数自己实现4、类型转换,路径要换成wstring类型5、找寻路径下指定格式的所有文件6、读取文件内容放入缓存7、业务逻辑处理,根据日志关键字输出指定结果8、结束

下面代码只是最原始的,业务逻辑处理没有示例,代码本身也是面向程序的,有很多地方为了易懂,有点重复,只是实现了其功能

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <windows.h>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/classification.hpp>  //is_any_of

using namespace std;

int main()
{
	clock_t Tstart,Tend;
	Tstart = clock();

	string strPath;					//动态执行程序路径
	vector<string> everyPath;		//存放每一级目录
	string sPath = "";				//拼装后string路径
	wstring wsPath = L"";			//wstring完整路径
	wstring wsFullPath = L"";		//wstring完整路径和文件名(实际是*的文件名)
	wstring wsTrueFullPath = L"";   //wstring真正完整路径和文件名
	vector<wstring> vecEveryFile;   //某目录下的所有指定格式的文件
	vector<wstring> vecFullFile;	//满足条件的文件名的绝对路径
	vector<string> vecFileContent;		//存放每一级目录
	string strFileContent;
	int nFileCount = 0;

	char chpath[100];
	GetCurrentDirectory(MAX_PATH,chpath);
	strPath = chpath;
	cout << strPath << endl;

	boost::split(everyPath,strPath,boost::is_any_of(",\\"),boost::token_compress_on);
	for(vector<string>::iterator iter= everyPath.begin();iter!= everyPath.end();iter++)
	{
		string stempPath = *iter;
		sPath = sPath + stempPath + "\\"  + "\\" ;
	}
	cout << sPath << endl;

	const char* chPath = sPath.c_str();
	size_t iPathNum = strlen(chPath) +1 ;
	const size_t newSize = 100;
	size_t convertedChars = 0;
	wchar_t wNewstring[newSize];
	mbstowcs_s(&convertedChars,wNewstring,iPathNum,chPath,_TRUNCATE);
	wsPath = wNewstring;
	wcout << wsPath << endl;

	wsFullPath = wsPath + L"*.log";
	wcout << wsFullPath << endl;
	_wfinddata_t fileInfo;
	long handle = _wfindfirst(wsFullPath.c_str(),&fileInfo);
	if( -1 == handle)
	{
		cout << nFileCount << endl;
		Tend = clock();
		double duration = (double)(Tend - Tstart);
		cout << "can not find the log" << endl;
		cout << duration << endl;
		return 0;
	}
	do
	{
		nFileCount ++;
		wstring wTempFile = fileInfo.name;
		vecEveryFile.push_back(wTempFile);
	}while( _wfindnext(handle,&fileInfo)==0 );
	cout << nFileCount << endl;
	for(vector<wstring>::iterator iter = vecEveryFile.begin();iter != vecEveryFile.end();iter ++)
	{
		wstring wtempFilename1 = *iter;
		wstring wFullFileName  = wsPath+wtempFilename1;
		vecFullFile.push_back(wFullFileName);
	}

	for(vector<wstring>::iterator iter = vecFullFile.begin();iter != vecFullFile.end();iter ++)
	{
		ifstream infile(*iter);
		while( infile >> strFileContent)
		{
			vecFileContent.push_back(strFileContent);
		}

	}

	//这边只是查看exe路径下的文件内容是否全部读取到缓存,实际的话根绝日志关键字输出不同的内容既可以
	for(vector<string>::iterator iter = vecFileContent.begin();iter != vecFileContent.end();iter ++)
	{
		cout << *iter << endl;
	}

	Tend = clock();
	double duration = (double)(Tend - Tstart);
	cout << duration << endl;
	system("PAUSE");
	return 0;
}

在file.exe的路劲下放入了alarm.log和trap.log,内容如下

file.exe的执行结果如下,成功将俩个日志文件的内容读入到缓存中,真正的日志定位系统还要实现对缓存内数据的处理,根据不同的值要输出不同的值到界面,让看不懂日志的人只需要执行一下exe文件,直接看输出就可以

时间: 2024-11-24 14:38:24

c++文件读取(二)---简单日志定位系统 附源码的相关文章

逗逼音乐播放器制作日志(一)&lt;附源码&gt;

我很喜欢编程,喜欢看到一个项目,从最初的几行代码慢慢变成好几个类,几千行代码.回头看看,这都是一个字母一个词语打出来的.就会觉得很开心... 曾经去报读过专业课程.可惜课程完毕后无缘成为一名码农,心里很是遗憾...现在记着的也不多了,不想就此放弃..于是决定制作一个简单的本地音乐播放器吧...之前已经写了点,网上参考了很多资料.希望各位大牛,多多指点...现在算是完成了3/1吧...我只能算是个半吊子,写不出什么精彩的代码.. 非常可惜的是,我在写的时候没有将Service加入,导致现在只能前台

AWStats 日志分析(附源码包)

简介:AWStats软件是一个免费的强大的服务器的日志文件分析工具,显示你所有的网页/邮件/FTP统计包括访问,访问者,页面,点击,高峰时间,操作系统,浏览器,搜索引擎,关键字,机器人访问,断开的链接和更多的阻力截图排序.特点:Awstats是在SourceForge上发展很快的一个基于Perl的WEB日志分析工具,一个充分的日志分析让Awstats显示您下列资料: 访问量,访问次数,页面浏览量,点击数,数据流量等 精确到每月.每日.每小时的数据 访问者国家 访问者IP Robots/Spide

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器控件提供了很简单的上传,但是有回传,还没有进度条提示.这次我们演示利用swfupload多文件上传,项目上文件上传是比不可少的,大家这个心里都知道.主要提供给源码说明及下载 最终效果图: SWFUpload的特点: 1.用flash进行上传,页面无刷新,且可自定义Flash按钮的样式; 2.可以在浏

cocos2d-x 委托模式的巧妙运用——附源码(二)

转载请注明出处:http://blog.csdn.net/hust_superman/article/details/38292265,谢谢. 继上一篇将了委托类的具体实现后,这篇来将一下如何在游戏中使用实现的委托类.也就是如何在游戏中来调用委托类来完成一些功能.具体的应用场景和应用层会在下面介绍. 先来看一看游戏demo实现的具体图片,demo比较简单,但是资源齐全,拿到源码后可以在源码的基础上继续完善demo做出一款真正的游戏.好了,老规矩,先上图再说: 游戏中点击播放按钮后会进入游戏主界面

ASP.NET程序读取二代身份证(附源码)

原文:ASP.NET程序读取二代身份证(附源码) 一般来说winform应用程序解决这个问题起来时很容易的,web应用程序就麻烦一点了. 这里我说说我的解决思路: 一.你必要有联机型居民身份证阅读器一个(带驱动光盘),这里我用的是精伦电子公司的iDR200,并有这个阅读器的开发接口说明. 二.新建一个winform控件项目ReadCardControl,添加一个主类ReadCard 1.  声明dll入口 [DllImport("Sdtapi.dll")] private static

Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)

Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载) POSTED ON 2014年6月27日 BY 天边的星星 本文内容: 1.横向ListView的所有实现思路; 2.其中一个最通用的思路HorizontalListView,并基于横向ListView开发一个简单的相册: 3.实现的横向ListView在点击.浏览时item背景会变色,并解决了listview里setSelected造成item的选择状态混乱的问题.

Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)

http://www.cnblogs.com/gossip/p/3473024.html Asp.net实现直接在浏览器预览Word.Excel.PDF.Txt文件(附源码) 功能说明 输入文件路径,在浏览器输出文件预览信息,经测试360极速(Chrome).IE9/10.Firefox通过 分类文件及代码说明  DemoFiles 存放可测试文件 Default.aspx  启动页 ExcelPreview.cs  Excel预览类 public static void Priview(Sys

3种精美Web前端搜索框展示(附源码)(二)

4.  CSS3响应式伸缩搜索框 能在支持 FireFox.Chrome.Safari.傲游.搜狗.360浏览器. 源码下载 /   在线演示 5.  css3带搜索框下拉菜单 源码下载 /   在线演示 6.  jQuery当乐网搜索下拉框 源码下载 /   在线演示 3种精美Web前端搜索框展示(附源码)(二)

7个播放器效果展示(附源码)(一,二,三,四)

1.  HTML5+CSS3自定义视频播放器实现物理效果 源码下载/  在线演示 2.  html5触发式音频播放 这个插件集成了一些非常好的 JavaScript 库,提供一个方便使用的文本动画插件. 源码下载 /  在线演示 3. html5+css3酷炫音频播放器 源码下载/  在线演示 4.  css3迷你播放器面板 能在支持 FireFox.Chrome.Safari.傲游.搜狗.360浏览器. 源码下载/  在线演示 7个播放器效果展示(附源码)(一,二,三,四)