一。使用设置:

头文件的添加:

..\Framwork\Include\pthread_64;

..\Framwork\CommFramwork\include;

..\Framwork\Utility\Include;
..\Framwork\NetMgr\Include;
..\Framwork\FramworkAp\Include;

..\Framwork\BlockMsg\Include;

..\Framwork\wdInterface\Include;

lib路径的添加:

FramworkAp.lib
Utility.lib

libeay32.lib
ssleay32.lib
BlockMsg.lib
pthreadVC2.lib
CommFramwork.lib
Utility.lib
FramworkAp.lib
NetMgr.lib

wdinterface.lib

二。使用方法

1.LOG的使用

准备工作:

建立配置文件 Config.cfg,拷贝内容:

-------------------------------------------------------------

# -------------------------日志-----------------------------
# device(设备)包括file(文件), console(控制台)及将来扩展的日志主机等
# level(级别)包括E_CRITICAL, E_ERROR, E_WARNING, E_NOTICE, E_SYSINFO, E_PROINFO, E_APPINFO, E_DEBUG
logger.type = common, debug, net

logger.common.device = file
logger.common.level = E_CRITICAL, E_ERROR, E_WARNING, E_NOTICE, E_SYSINFO, E_PROINFO, E_APPINFO, E_DEBUG, E_STATICS
logger.common.path = E:\work\CTPServer\Bin64\log
logger.common.prefix = CTPServer
logger.common.postfix = log
logger.common.num = 6
logger.common.level1 = E_CRITICAL
logger.common.file1 = LogErr
logger.common.level2 = E_ERROR
logger.common.file2 = LogErr
logger.common.level3 = E_WARNING
logger.common.file3 = LogErr
logger.common.level4 = E_PROINFO
logger.common.file4 = LogProInfo
logger.common.level5 = E_STATICS
logger.common.file5 = LogStatics
logger.common.level6 = E_DEBUG
logger.common.file6 = LogDebug

logger.debug.device = console
logger.debug.level = E_CRITICAL, E_ERROR, E_WARNING, E_NOTICE, E_SYSINFO, E_PROINFO, E_APPINFO, E_DEBUG, E_STATICS

logger.net.device = netlog
logger.net.level = E_CRITICAL, E_ERROR, E_WARNING, E_NOTICE, E_SYSINFO, E_PROINFO, E_APPINFO, E_DEBUG, E_STATICS

第一步:添加头文件

#include "Logger.h"

第二步:初始化

CLogger::Instance()->Initial(。。。);

第三步:启动日志

if (CLogger::Instance()->Start() != 0)
    return ;

第四步:使用

CRLog(E_DEBUG, "配置初始化成功");

CRLog(E_APPINFO, "配置初始化成功");

2.配置文件的使用

准备工作:

第一步:引入

#include "ConfigImpl.h"

第二步:定义

CConfigImpl* m_pConfig;

第三步:日志初始化

m_pConfig = new CConfigImpl();

第四步:加载配置文件

if (m_pConfig->Load(strPath) != 0)
return ;

第五步:使用配置

m_pConfig->GetProperty(key, value);

例如“用配置来初始化日志”:
if (CLogger::Instance()->Initial(m_pConfig->GetProperties("logger")) != 0)
return ;

第六步:删除

if (0 != m_pConfig)
{
  delete m_pConfig;
  m_pConfig = nullptr;
}

3.文件共享的消息队列

第一步:引入头文件

#include "XQueue.h"
#include "XQueueIO.h"

第二步:

1.读取模式(进程间通信)

CXQueue xQueue;//定义

do
{
  setColor(12,0);
  int nRet = xQueue.Open(sXQueName.c_str());//打开
  if (!xQueue.IsOpen())
  {
  string strTmp ="打开共享内存信息队列[";
  strTmp += sXQueName;
  strTmp += "]失败!10秒后再试!";
  //cout << "打开共享内存信息队列[" << sXQueName << "]失败!10秒后再试!" << endl;
  Sleep(10000);

}
else
{
  break;
}
} while (1);

unsigned int uiBlockSize = 1024;
unsigned int uiXQueLen = 1024;
unsigned int uiBufSize = uiBlockSize*uiXQueLen;

char* pBuf= NULL;

pBuf = new char[uiBufSize];

long lRet = xQueue.Read((LPBYTE)pBuf, &uiBufSize, &nMessageId, NULL, uiTimeout);//读取
if (XQUEUE_ERROR_SUCCESS != lRet)
{
setColor(12);

string strTmp ="共享队列 [";
strTmp += sXQueName;
strTmp += "]没有数据!";
CRLog(E_ERROR,"%s",strTmp.c_str());
continue;
}

setColor(11);
CRLog(E_ERROR,"共享队列[XQueue]读完成");

2.创建模式

例如:创建2个文件共享队列

vector< CXQueueIo<QUOTATION>* > m_vecQueueIo;

//初始创建

unsigned int uiXQueNum = 2;
if (0 == m_pConfig->GetProperty("XQUE_NUM", sTmp))
{
  uiXQueNum = strutils::FromString<unsigned int>(sTmp);
  if (uiXQueNum > 10)
  uiXQueNum = 2;
}

for (unsigned int uiIndex = 1; uiIndex <= uiXQueNum; uiIndex++)
{
  string sCfgName = "XQUE" + strutils::ToString<unsigned int>(uiIndex);

  CConfig *pCfgWriter;
  pCfgWriter = m_pConfig->GetProperties(sCfgName);
  if (0 != pCfgWriter && !pCfgWriter->IsEmpty())
  {
  }
  else
  {
    pCfgWriter = m_pConfig;
  }
  CRLog(E_APPINFO,"初始化[%s]发布点", sCfgName.c_str());
  CXQueueIo<QUOTATION>* pWriter = new CXQueueIo<QUOTATION>();
  pWriter->Init(pCfgWriter);//跟配置文件名绑定在一起
  m_vecQueueIo.push_back(pWriter);

}

//启动
int nCount = 0;
for (vector< CXQueueIo<QUOTATION>* >::iterator it = m_vecQueueIo.begin(); it != m_vecQueueIo.end(); ++it)
{
  nCount++;
  if (0 != *it)
  {
  CRLog(E_APPINFO,"启动[XQUE%d]", nCount);
  (*it)->Start();
  }
}

//分发给相应队列处理
int uiCount = 0;
string sXQueName,sTmp;
for (vector< CXQueueIo<QUOTATION>* >::iterator it = m_vecQueueIo.begin(); it != m_vecQueueIo.end(); ++it)
{
  uiCount++;
  if (0 != *it)
  {
    (*it)->Enque(quo);

    sXQueName = "XQUE" + strutils::ToString<unsigned int>(uiCount);
    sXQueName +=".XQUE_NAME";

    if (0 == m_pConfig->GetProperty(sXQueName,sTmp))
    sXQueName = sTmp;

    CRLog(E_APPINFO,"共享队列XQueue[%s]写完成",sXQueName.c_str());
  }

}//end for

 

4.看门狗功能

第一步:引入头文件

#include

第二步:定义对象

CMemShareAlive m_oMemShareAlive;

第三步:初始化

m_oMemShareAlive.Bind(E_PROCESS_APP);

第四步:创建对象

if (FALSE == m_oMemShareAlive.Create(sTmp.c_str()))
{
setColor(12,0);
cout << "MemShareAlive.Create fail" << endl;
CRLog(E_ERROR,"%s", sXQueName.c_str());
}
else
{
cout << "MemShareAlive.Create Successfull." << endl;
unsigned int uiProcessID = ::GetCurrentProcessId();
m_oMemShareAlive.IamAlive(uiProcessID);
//m_oMemShareAlive.SetNodeID(uiNodeID);
}

第五步:在节点位置,都添加上语句

m_oMemShareAlive.IamAlive();

第六步:在WatchDog的配置文件上加上监控XX.EXE,就可以自动启动XX.EXE程序

Framwork框架日志与配置工具的使用的更多相关文章

  1. Log4net日志GUI配置工具

    关于log4net的配置文章在园子里真的很多,但是有关GUI界面配置的文章确定太少,改写了一个以前很早的工具 以前的那个有很多的问题,这个基本的大的问题没有,可能一个小问题还是需要修改下,基本功能肯定 ...

  2. java日志框架log4j详细配置及与slf4j联合使用教程

    最后更新于2017年02月09日 一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” <d ...

  3. [转载]java日志框架log4j详细配置及与slf4j联合使用教程

    一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” 1 2 3 4 5 <dependen ...

  4. java日志框架log4j详细配置及与slf4j使用教程

    一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” 1 2 3 4 5 <dependen ...

  5. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  6. 物联网框架ServerSuperIO(SSIO)更新、以及增加宿主程序和配置工具,详细介绍

    一.更新内容 1.修改*Server类,以及承继关系.2.增加IRunDevice的IServerProvider接口继承.3.修复增加COM设备驱动可能造成的异常.4.修复网络发送数据可能引发的异常 ...

  7. 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)

    我们只能通过各种系统日志来分析网站的运行状况,对于部署在IIS上的网站来说,IIS日志提供了最有价值的信息,我们可以通过它来分析网站的响应情况,来判断网站是否有性能问题,或者存在哪些需要改进的地方 对 ...

  8. asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程

    最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...

  9. Yii1.1框架关于日志的配置的简单使用

    最近开始接触新项目,新项目用的框架是Yii1.1版本的,通过看框架文档大致熟悉了解了Yii在日志方面的使用. 首先在protected/config/main.php配置文件中加入日志相关配置,如下图 ...

随机推荐

  1. C/C++标准有哪些?

                        1. C 时间 名称 标准制定组织 事件 1978 K&R标准 K&R <The C Programming Language>   ...

  2. 【tips】编译epic异常解决

    目标:编译 epic 异常信息一: No CMAKE_C_COMPILER could be found.  No CMAKE_CXX_COMPILER could be found.   解决方法: ...

  3. Android碎笔录3——点击跳转

    只要是view都能设置点击事件,不必要非得是Button. 要想实现跳转得三步走: 第一步.绑定 每个Layout都有一个一个java文件跟它绑定,这个Layout相关的代码都写在这个java文件里 ...

  4. css预处理器(sass)

    学过CSS的人都知道,它不是一种编程语言.你可以用它开发网页样式,但是没法用它编程.也就是说,CSS基本上是设计师的工具,不是程序员的工具.在程序员眼里,CSS是一件很麻烦的东西.它没有变量,也没有条 ...

  5. MyCAT源码分析——分析环境部署

    为了更好地了解mycat的原理,计划对mycat源码进行通读一遍,根据实际业务环境进行相关源码优化. 一.环境描述 操作系统:windows 10 x64 软件:jdk 1.7+   maven   ...

  6. [翻译] CNPGridMenu

    CNPGridMenu CNPGridMenu is a Mailbox style grid menu with a blurred background for iOS 7 & iOS 8 ...

  7. SQL连接的分类

    连接的分类 内连接 等值连接(INNER JOIN) 自然连接(NATURAL JOIN) 交叉连接(CROSS JOIN) 不等连接 外连接 左外连接(LEFT OUTER) 右外连接(RIGHT ...

  8. 2 Docker 镜像基础

    Docker 镜像可以从docker.io 下载,也可以自己通过Dockerfile来构建镜像,我有时从国外下载镜像时,网速不行,我就改成国内的镜像,修改如下: # vim /etc/docker/d ...

  9. python源码学习(一)——python的总体架构

    python源码学习(一)——python的总体架构 学习环境: 系统:ubuntu 12.04 STLpython版本:2.7既然要学习python的源码,首先我们要在电脑上安装python并且下载 ...

  10. aclocal: error: aclocal: file '/usr/local/share/aclocal/wxwin.m4' does not exist

    1. 查找wxwin.m4文件 mdfind -name wxwin.m4 2. 删除/usr/local/share/aclocal/wxwin.m4,建立软连接 cd /usr/local/sha ...