LogViewer.cpp
#include
"
StdAfx.h
"
#include
"
.logviewer.h
"
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
XMLLoader::XMLLoader(
void
)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
XMLLoader::
~
XMLLoader(
void
)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
XMLLoader::loadFile(String fileName)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
MSXML2::IXMLDOMDocument2Ptr xml;
MSXML2::IXMLDOMElement *pDoc = NULL;
MSXML2::IXMLDOMNodeList *pChilds = NULL;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
xml.CreateInstance(__uuidof(MSXML2::DOMDocument));
assert( NULL != xml );
if(!xml->load(fileName.c_str()))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{printf( " can not find file please input correct file name ");assert(0);}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
xml->get_documentElement(&pDoc);
assert( NULL != pDoc );
MSXML2::IXMLDOMNodePtr root = pDoc;
MSXML2::IXMLDOMNodeListPtr childs = pDoc->GetchildNodes();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
assert( NULL != root );
resetTree(mRoot);
readNode(root, mRoot);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
xml.Release();
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
XMLLoader::readNode(MSXML2::IXMLDOMNodePtr
&
element, NodeItem
&
node)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
VARIANT_BOOL v;
v = element->hasChildNodes();
_bstr_t name1 = element->GetnodeName();
_bstr_t text1 = element->Gettext();
//BSTR text2;
//element->get_text(&text2);
//element->get_baseName(&text2);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
MSXML2::IXMLDOMNamedNodeMapPtr attr = element->Getattributes();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
// Iterate all child nodes
if (VARIANT_TRUE == v)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
MSXML2::IXMLDOMNodeList *pChilds = NULL;
HRESULT hr = element->get_childNodes(&pChilds);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
for (int i = 0; i < pChilds->Getlength(); i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
MSXML2::IXMLDOMNodePtr pChild = (MSXML2::IXMLDOMNodePtr)pChilds->item[i];
NodeItem child;
readNode(pChild, child);
node.mChildNodes.push_back(child);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
// Retrieve attributes.
if ( NULL != attr )
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
long lCount = 0;
MSXML2::IXMLDOMNodePtr attrItem = NULL;
HRESULT hr = attr->get_length(&lCount);
if( !SUCCEEDED(hr) )
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return FALSE;
}
for( int j = 0; j < lCount; j++ )
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
attr->get_item(j,&attrItem);
String attrName = (LPCTSTR)(_bstr_t)attrItem->nodeName;
String attrValue = (LPCTSTR)(_bstr_t)attrItem->nodeTypedValue;
NodeItem child;
child.mNodeName = attrName;
child.mText = attrValue;
node.mAttributes.push_back(child);
}
}
// Retrieve the node's node name and text.
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
_bstr_t name = element->GetnodeName();
_bstr_t text = element->Gettext();
node.mNodeName = name;
node.mText = text;
}
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
XMLLoader::resetTree(NodeItem
&
node)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
size_t i = 0;
node.mAttributes.clear();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
for ( i = 0; i < node.mChildNodes.size(); i++ )
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
resetTree(node.mChildNodes[i]);
}
node.mChildNodes.clear();
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
LogViewer::LogViewer(
const
String xmlFileName)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
indent=0;
this->loadFile(xmlFileName);
this->mRoot;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
LogViewer::
~
LogViewer(
void
)
//
释放内存的树
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
//mRoot.mAttributes.clear();
//mRoot.mChildNodes.clear();
}
bool
LogViewer::m_To_Html(String htmlfileName,String LevelNodeName,String nodeName,String nodetext,String attributeName,String attributeValue)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
std::fstream m_file;
m_file.open(htmlfileName.c_str(),std::ios_base::out);
std::vector<NodeItem*> result;
findNode(result,mRoot,LevelNodeName,nodeName,nodetext,attributeName,attributeValue);
for (unsigned int i=0;i<result.size();i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
wirte_noe_html(*(result[i]),m_file);
}
m_file.flush();
m_file.close();
return true;
}
void
LogViewer::wirte_noe_html(NodeItem
&
node,std::fstream
&
file)
//
comman out no font size
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
drawATable(indent,file);file<<"<ul>"<<' ';indent++;
drawATable(indent,file);file<<"<li>";file<<"<font face="Courier" size="2" color="#999999">"<<node.mNodeName<<" ";
//attributes;
for(unsigned int i=0;i<node.mAttributes.size();i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
file<<node.mAttributes[i].mNodeName<<": "<<node.mAttributes[i].mText<<" ";
}
//if((node.mNodeName=="Message")||node.mNodeName=="IN_IMAGE"||node.mNodeName=="OUT_IMAGE")
//if((node.mChildNodes.size()<=1)&&(node.mChildNodes[0].mNodeName=="#text"))
// file<<node.mText;
file<<node.mChildNodes[0].mText;
file<<"</font>"<<"</li>"<<' ';
file.flush();
for (unsigned int i=0;i<node.mChildNodes.size();i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(node.mChildNodes[i].mNodeName!="#text")
wirte_noe_html(node.mChildNodes[i],file);
}
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//*String name=node.mNodeName;
if(name=="CONVERT")
{
}else if(name=="Message")
{
}*/
drawATable(indent,file);file<<"</ul>"<<' ';indent--;
}
String LogViewer::setFont(String face,String size,String color,String
&
str)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
String font="<font ";
//if(face!="")
//font+="face="+face;
//if(size!="")
// font+=" size="+size;
//if(color!="")
// font+=" color="+""";//+color+""";
//font+=(">"+str+"</font>");
return font;
}
bool
LogViewer::m_To_Excel(String excelFileName)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
std::fstream m_file;
m_file.open(excelFileName.c_str(),std::ios_base::out);
writeExcelHead(m_file);writeExcelStyles(m_file);indent++;
drawATable(indent,m_file);m_file<<" <Worksheet ss:Name="Sheet1">"<<' ';indent++;
parsingXML(mRoot,m_file);
drawATable(indent,m_file);m_file<<"</Worksheet>"<<" ";indent--;
drawATable(indent,m_file);m_file<<"</Workbook>"<<' ';;
m_file.flush();
m_file.close();
//std::vector<NodeItem*> result;
//findNode(result,mRoot,"CONVERT");
//int i=result.size();
return true;
}
void
LogViewer::parsingXML(NodeItem
&
node,std::fstream
&
m_file)
//
先实现一定的深度先
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
if(node.mNodeName=="CONVERTS")
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
drawATable(indent,m_file);
m_file<<"<Table>"<<' ';indent++;
setExcelWidth(m_file);
for(int i=0;i<node.mChildNodes.size();i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
NodeItem subNode=node.mChildNodes[i];
if(subNode.mNodeName=="CONVERT")
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
drawATable(indent,m_file); m_file<<"<Row>"<<' ';indent++;
for(int j=0;j<subNode.mChildNodes.size();j++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if((subNode.mChildNodes[j].mNodeName=="IN_IMAGE")||(subNode.mChildNodes[j].mNodeName=="OUT_IMAGE"))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
drawATable(indent,m_file); m_file<<"<Cell><Data ss:Type="String">"<<subNode.mChildNodes[j].mText<<"</Data></Cell>"<<" ";
}
}
String strERROR;findMessage(subNode,"priority","ERROR",strERROR);
String strWarning;findMessage(subNode,"priority","WARNING",strWarning);
if(strERROR.length()>0)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
drawATable(indent,m_file); m_file<<"<Cell><Data ss:Type="String">"<<"ERROR"<<"</Data></Cell>"<<" ";
}else if(strWarning.length()>0)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
drawATable(indent,m_file); m_file<<"<Cell><Data ss:Type="String">"<<"WARNING"<<"</Data></Cell>"<<" ";
}else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
drawATable(indent,m_file); m_file<<"<Cell><Data ss:Type="String">"<<"SUCCESS"<<"</Data></Cell>"<<" ";
}
drawATable(indent,m_file); m_file<<"<Cell><Data ss:Type="String">"<<strERROR+" "+strWarning<<"</Data></Cell>"<<" ";
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
drawATable(indent,m_file);m_file<<"</Row>"<<' ';indent--;m_file.flush();
}
}
drawATable(indent,m_file);
m_file<<"</Table>"<<' ';indent--;
}else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
for(int i=0;i<node.mChildNodes.size();i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
parsingXML(node.mChildNodes[i],m_file);
}
}
}
void
LogViewer::findNode(std::vector
<
NodeItem
*>
&
resultNodes,NodeItem
&
node,String LevelNodeName,String nodeName,String nodetext,String attribute,String attributeValue)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
std::vector<NodeItem*> allNode;
findNode(allNode,node,LevelNodeName);
for (unsigned int i=0;i<allNode.size();i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
bool isMatch=false;
isSubNodeMatch(*(allNode[i]),isMatch,nodeName,nodetext,attribute,attributeValue);
if(isMatch||isNodeMatch(*(allNode[i]),nodeName,nodetext,attribute,attributeValue))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
resultNodes.push_back(allNode[i]);
}
}
}
bool
LogViewer::isNodeMatch(NodeItem
&
node,String nodeName,String text,String attribute,String attributeValue)
//
单个node
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
bool result=false;
if(nodeName!="")
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(nodeName==node.mNodeName)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
result=true;
if((text!="")&&(node.mText!=text))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return false;
}
if(attribute!="")
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
for(unsigned i=0;i<node.mAttributes.size();i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(node.mAttributes[i].mNodeName!=attribute)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return false;
}else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if((attributeValue!="")&&(node.mAttributes[i].mText!=attributeValue))
return false;
}
}
}//else if attribute=="" then attributeValue is not use
}else
return false;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}else
return true;
return result;
}
void
LogViewer::isSubNodeMatch(NodeItem
&
INnode,
bool
&
outP,String nodeName,String text,String attribute,String attributeValue)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
for (unsigned i=0;i<INnode.mChildNodes.size();i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
outP=isNodeMatch(INnode.mChildNodes[i],nodeName,text,attribute,attributeValue);
if(outP)return;
else
isSubNodeMatch(INnode.mChildNodes[i],outP,nodeName,text,attribute,attributeValue);
}
}
void
LogViewer::findNode(std::vector
<
NodeItem
*>
&
resultNodes,NodeItem
&
node,String LevelNodeName)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
if(node.mNodeName==LevelNodeName)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
NodeItem *pNode=&node;
resultNodes.push_back(pNode);
return;
}else//if not use else it will return all node which Node name is levelNodeName
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
for(unsigned int i=0;i<node.mChildNodes.size();i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
findNode(resultNodes,node.mChildNodes[i],LevelNodeName);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
bool
LogViewer::findMessage(NodeItem
&
node,String attributeName,String attributeValue,String
&
result)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
static bool isfind=false;
for(int i=0;i<node.mAttributes.size();i++)//对当前的Node进行处理
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if((node.mAttributes[i].mNodeName==attributeName)&&(node.mAttributes[i].mText==attributeValue))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{result+=" "+node.mText;isfind=true;}
}
for(int i=0;i<node.mChildNodes.size();i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
findMessage(node.mChildNodes[i],attributeName,attributeValue,result);
}
return isfind;
}
void
LogViewer::drawATable(
int
count,std::fstream
&
m_file)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
for(int i=0;i<count;i++)
m_file<<" ";
}
void
LogViewer::writeExcelHead(std::fstream
&
m_file)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
m_file<<"<?xml version="1.0"?>"<<' ';
m_file<<"<?mso-application progid="Excel.Sheet"?>"<<' ';
m_file<<"<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet""<<' ';
m_file<<" xmlns:o="urn:schemas-microsoft-com:office:office""<<' ';
m_file<<" xmlns:x="urn:schemas-microsoft-com:office:excel""<<' ';
m_file<<" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet""<<' ';
m_file<<" xmlns:html="http://www.w3.org/TR/REC-html40">"<<' ';
}
void
LogViewer::writeExcelStyles(std::fstream
&
m_file)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
m_file<<"<Styles>"<<' '
<<" <Style ss:ID="Default" ss:Name="Normal">"<<' '
<<" <Alignment ss:Vertical="Bottom"/>"<<' '
<<" <Borders/>"<<' '
<<" <Font x:Family="Swiss"/>"<<' '
<<" <Interior/>"<<' '
<<" <NumberFormat/>"<<' '
<<" <Protection/>"<<' '
<<" </Style>"<<' '
<<"</Styles>"<<' ';
}
void
LogViewer::setExcelWidth(std::fstream
&
m_file)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
drawATable(indent,m_file);m_file<<"<Column ss:AutoFitWidth="0" ss:Width="171.75"/>"<<' ';
drawATable(indent,m_file);m_file<<"<Column ss:AutoFitWidth="0" ss:Width="171.75"/>"<<' ';
drawATable(indent,m_file);m_file<<"<Column ss:AutoFitWidth="0" ss:Width="50.75"/>"<<' ';
drawATable(indent,m_file);m_file<<"<Column ss:AutoFitWidth="0" ss:Width="340.75"/>"<<' ';
}
LogManager
// LogManager.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "LogFile.h"
#include <iostream>
#include <fstream>
//#include <.h>
using namespace std;
#include "LogViewer.h"
int parsingArg(int argc,_TCHAR* argv[]);
void rotation(int i,int type)
{
Log_TF("rotation");
Log_Message(MES_PARAMETER,"the parameter is %d and %d ",i,type);
Log_Message(MES_PARAMETER,"the parameter is %d and %d ");
Log_Message(MES_WARNING,"it is a Warning");
Log_Message(MES_ERROR,"it is a error");
}
void scale(int i)
{
Log_TF("scale");
Log_Message(MES_PARAMETER,"the parameter is %d ",i);
Log_Message(MES_PARAMETER,"the parameter is %d ");
}
void flip(int i)
{
Log_TF("flip");
Log_Message(MES_PARAMETER,"the parameter is %d and ",i);
Log_Message(MES_PARAMETER,"the parameter is %d ");
}
void convertImage(String soucename,String destname)
{
Log_TF("CONVERT");
Log_Message(MES_INPUT_IMAGE,"%s",soucename.c_str());
Log_Message(MES_OUTPUT_IMAGE," %s",destname.c_str());
rotation(3,5);
scale(3);
flip(1);
}
void changesAll(void)
{
//Log_TF("CONVERTS");
Log_TFTOP;
for(int i=0;i<1;i++)
{
//std::string souce=std::string(i);
convertImage("Image.bmp","DImage.png");
}
convertImage("Image.bmp","DImage.png");
}
class Test
{
public:int getValue(){return value;}
Test(){value=9;}
protected:
private:
int value;
void b(){}
};
class Test2
{
public:void setValue(int v){value=v;}
protected:
private:int value;
};
class Test3: public Test
{
private:int value;
public:Test3(){value=0;}
int a(){return Test::getValue(); //return Test::value;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
parsingArg(argc,argv);
LogFile m_log;
m_log.init("test.xml");
//Log_Init("test.xml");
//changesAll();
//
OutputDebugString("df/n");
//printf("teat %d %d %d %d",MES_PARAMETER,MES_OUTPUT_IMAGE,MES_ERROR,MES_WARNING);
Log_Message("dfdfdf");
//Log_Update();
//Log_End();//关闭输出流
//Log_XML_TO_EXCEL("Test.xml","testexcel.xml");
//Log_XML_TO_HTML("test.xml","testhtml.html");
m_log.pushStack("CONVERT");
m_log.drawMessage(IMAGENAME,"dfdsf");
m_log.drawMessage(PARAMETER,"the parameter is");
m_log.popStack();
flip(1);
m_log.term();
Test2 *test2=new Test2();
test2->setValue(100);
Test *test=(Test*)test2;
Test3 *test3=new Test3();
int c=test3->getValue();
///*LogViewer logviewer("test.xml");
//logviewer.m_To_Excel("test2.xml");*/
//
CoUninitialize();
return 0;
}
void printNote(void)
{
cout<<"please input parameter like this: /n"
<<"/t[xmlFileName] [htmlFileName] [levelNodeName] [nodeName] [attributeName] [attributeValue]/n"
<<"/t please note: levelNodeName should not be a child of nodeName/n";
}
int parsingArg(int argc,_TCHAR* argv[])
{
if(argc<=3||argc>=8)
{
printNote();
return 0;
}
//判断文件格式
//执行
String parameters[7];
for (int i=1;i<argc;i++)
{
parameters[i-1]=String(argv[i]);
}
for (int i=5;i>8-argc;i--)
{
parameters[i]="";
}
cout<<"the input Parameters are:"<<parameters[0]<<"/t "<<parameters[1]<<"/t "<<parameters[2]<<"/t "<<parameters[3]<<"/t "<<parameters[4]<<"/t "<<parameters[5]<<"/t "<<parameters[6];
LogViewer logviewer(parameters[0]);
//LogViewer logviewer("test.xml");
logviewer.m_To_Html(parameters[1],parameters[2],parameters[3],parameters[4],parameters[5],parameters[6]);
return 1;
}
/
LogManager::parsingArg()用于生成一个logviwer.exe 文件,这样就可以在命令行中把xml 文件 通过条件查询方式用html来显示.参数格式为:
[xmlfilename] [htmlfilename] [levelnodename] [nodename] [text] [attriburename] [attributevalue]
参数至不为三个,后面的可以不要。levelnaodename是指以多少深度来显示,以后的参数是条件