Framwork框架日志与配置工具的使用
一。使用设置:
头文件的添加:
..\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框架日志与配置工具的使用的更多相关文章
- Log4net日志GUI配置工具
关于log4net的配置文章在园子里真的很多,但是有关GUI界面配置的文章确定太少,改写了一个以前很早的工具 以前的那个有很多的问题,这个基本的大的问题没有,可能一个小问题还是需要修改下,基本功能肯定 ...
- java日志框架log4j详细配置及与slf4j联合使用教程
最后更新于2017年02月09日 一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” <d ...
- [转载]java日志框架log4j详细配置及与slf4j联合使用教程
一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” 1 2 3 4 5 <dependen ...
- java日志框架log4j详细配置及与slf4j使用教程
一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” 1 2 3 4 5 <dependen ...
- 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 重点: 实现多级子目录的压缩, ...
- 物联网框架ServerSuperIO(SSIO)更新、以及增加宿主程序和配置工具,详细介绍
一.更新内容 1.修改*Server类,以及承继关系.2.增加IRunDevice的IServerProvider接口继承.3.修复增加COM设备驱动可能造成的异常.4.修复网络发送数据可能引发的异常 ...
- 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)
我们只能通过各种系统日志来分析网站的运行状况,对于部署在IIS上的网站来说,IIS日志提供了最有价值的信息,我们可以通过它来分析网站的响应情况,来判断网站是否有性能问题,或者存在哪些需要改进的地方 对 ...
- asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程
最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...
- Yii1.1框架关于日志的配置的简单使用
最近开始接触新项目,新项目用的框架是Yii1.1版本的,通过看框架文档大致熟悉了解了Yii在日志方面的使用. 首先在protected/config/main.php配置文件中加入日志相关配置,如下图 ...
随机推荐
- 关于modelmap.addAttribute("",)转到jsp页面获取不到值的问题
问题一,可能是你设置的web.xml的头有问题 掉坑里好一会,发现我默认生成的web.xml中头部的配置是 <!DOCTYPE web-app PUBLIC "-//Sun Micro ...
- The memory graph Shared by the method
Phone类 package com.itheima_03; /* * 手机类 */ public class Phone { String brand; int price; String colo ...
- mac安装软件提示没有权限
Mac 安装软件基本是各种爽,自动更新啥. 但是有一种提示没有权限的错误,很不爽,还要sudo管理员权限 有一个修复 /usr/local目录权限的命令 sudo chown -R 'whoami' ...
- Windows ->> Windows Server 2012打开管理添加“我的电脑”桌面图标途径
Windows Server 2012打开管理添加“我的电脑”桌面图标途径 rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
- 网站url常见报错
报错情况比较复杂,此处列出比较常见的几种报错内容: 报错: 报错是一个大类, 的报错基本上是权限问题,出现 报错时您需要检测权限配置问题. 403.1 错误是由于“执行”访问被禁止而造成的.若试图从目 ...
- Java学习---程序设计_面试题[2]
百度2017春招笔试真题编程题集合之买帽子 // 2017-10-09 // 题目描述 // 度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同.度度熊想买一顶价格第三便宜的帽子,问第 ...
- SQL server reporting service - rsReportServerNotActivated error solution
描述: 今天在原有的数据库版本上增加了Reporting Service 功能,数据库完成安装后,没有发现ReportServer和 ReportServerTemp 两个数据库 于是从其他服务器上, ...
- Linux基础入门 - 2
第三节 用户及文件权限管理 3-1.Linux用户管理 Linux 是一个可以实现多用户登陆的操作系统,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件.但实际上他们的文件都是 ...
- Ubuntu 12.04中MyEclipse 10.6+下载+安装+破解
至于MyEclipse在Ubuntu的安装教程网上很多,那我为什么我还写这篇文章呢?这次重装Ubuntu之后, 在安装MyEclipse 10.6过程中遇到了一个问题,所以把MyEclipse的安装方 ...
- android--简单的发短信功能
一.准备字符资源 <string name="tip_phone">请输入电话号码</string> <string name="tip_s ...