- 浏览: 43470 次
- 性别:
- 来自: 深圳
最新评论
我的日志记录组件 - 东方散人 - CSDN博客
和大家分享下我写的日志记录文件组件。下面是一些定义和调用的封装。如存在bug,欢迎指正。
如需要demo程序和组件可去我在csdn下的下载资源或是去风华软件在线(www.fhuasoft.cn)网站上去下载。
//下面是定义文件
#ifndef _DEBUG_TRACE_2004
#define _DEBUG_TRACE_2004
#include
#include "logdeal.h"
#define DOUT_FILE 0x0001 //将调试信息输出到文件中去
#define DOUT_VIEW 0x0002 //将调试信息输出到DebugView中去
#define DOUT_ALL 0xffff //将调试信息发到所有接受调试信息的模块中去
class CLog
{
public:
CLog();
~CLog();
static CLog* Create();
BOOL Trace(BSTR s);
void AddRef();
void Release();
private:
CComPtrm_pLog;
static CLog *plog;
DWORD m_dwRef;
CRITICAL_SECTION m_cr;
};
#define DEBUG_TRACE
#ifdef DEBUG_TRACE
BOOL DebugTrace(LPCTSTR lpszFormat,...);
BOOL DLOGTrace(LPCTSTR lpszFormat,...);
BOOL DTrace(int, LPCTSTR lpszFormat,...);
#define DG DTrace
#define DT DebugTrace
#define _DT DEBUG_TRACE
#else
#define DT
#define DG
#undef _DT
#endif
#endif
//下面是实现文件
#include "stdafx.h"
#include
#include "DT.h"
#ifdef DEBUG_TRACE
BOOL DebugTrace(LPCTSTR lpszFormat,...)
{
ASSERT(AfxIsValidString(lpszFormat));
static HWND hwnd = ::FindWindowA(NULL, "DbgView");
if(!IsWindow(hwnd))
hwnd = ::FindWindowA(NULL, "DbgView");
if(hwnd)
{
CString szMsg;
va_list argList;
va_start(argList, lpszFormat);
try
{
szMsg.FormatV(lpszFormat, argList);
}
catch(...)
{
szMsg = "DebugHelper输出字符串格式错误!";
}
va_end(argList);
DWORD dwId = GetCurrentProcessId();
::SendMessage(hwnd,WM_SETTEXT,dwId,(LPARAM)(LPCTST R)szMsg);
return TRUE;
}
return FALSE;
}
BOOL DLOGTrace(LPCTSTR lpszFormat,...)
{
ASSERT(AfxIsValidString(lpszFormat));
{
CString szMsg;
va_list argList;
va_start(argList, lpszFormat);
try
{
szMsg.FormatV(lpszFormat, argList);
}
catch(...)
{
szMsg = "DebugView输出字符串格式错误!";
}
va_end(argList);
CLog *log = CLog::Create();
log->Trace(szMsg.AllocSysString());
log->Release();
return TRUE;
}
return FALSE;
}
BOOL DTrace(int ntype, LPCTSTR lpszFormat,...)
{
static int nt = -1;
if(nt SetFile(T2W(str));
m_dwRef = 0;
}
CLog::~CLog()
{
if(m_pLog)
{
m_pLog.Release();
}
::CoUninitialize();
// if(CLog::m_pLog)
}
CLog *CLog::Create()
{
if(plog == NULL)
{
plog = new CLog();
}
plog->AddRef();
return plog;
}
void CLog::AddRef()
{
EnterCriticalSection(&m_cr);
m_dwRef ++;
LeaveCriticalSection(&m_cr);
}
void CLog::Release()
{
EnterCriticalSection(&m_cr);
m_dwRef --;
if(m_dwRef == 0)
{
DeleteCriticalSection(&m_cr);
delete plog;
}
else
LeaveCriticalSection(&m_cr);
}
BOOL CLog::Trace(BSTR s)
{
if(plog && m_pLog)
{
EnterCriticalSection(&m_cr);
HRESULT hr = m_pLog->Trace(s) ;
LeaveCriticalSection(&m_cr);
return hr == S_OK;
}
return FALSE;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/nxjbill/archive/2008/04/29/23 42587.aspx
发表评论
-
Unicode 字符串
2012-07-06 09:52 6802.8.1 C 运行期库对Unicode的支持 为了利 ... -
取以某字符开始,以某字符结束的字符串(正则表达式:VB.net)
2012-07-06 09:45 1971要求:解析字符串并取值 Dim str AsStrin ... -
正则表达式
2012-07-06 09:37 674转自 http://deerchao.net/tutori ... -
ContextMenu在Flex的 spark Panel、TiltleWindow中不显示
2012-07-06 09:30 656经过自己研究测试,发现按如下方式也可以实现pannel中菜 ... -
js+正文规则 高亮搜索关键字(二)
2012-07-05 20:45 61011 我顶 用户通过搜索引擎搜索关键字进入你的网站或者 ... -
Flex中取DataGrid里的值
2012-07-02 10:50 467用outerDocument来取mx:itemRender ... -
Flex中如何利用firstVisibleItem属性设置或取得第一个显示节点的例子
2012-07-02 10:49 601... -
flex学习-----动态添加AdvancedDataGrid列
2012-07-02 10:49 612var columnsArrayCollection:Ar ... -
flex4 datagrid增加链接按钮的方法实现
2012-07-02 10:49 598关于在datagrid里面,增加链接按钮的实现方法 ... -
ExtJS 4 Grid组件
2012-07-01 00:30 785我们正 ... -
主流地图API比较
2012-07-01 00:30 743最近因为工作关系,对市面上主流的地图API都进行了一遍了解 ... -
基于push技术的web实时网络管理框架研究
2012-07-01 00:30 4471 引言 基于 web 的网络管理是web 功能和网 ... -
广州工作2个月!差人的公司可以call我
2012-07-01 00:30 630网名:夜梦惊魂/夜枫设计 姓名:胡军 博客:http ... -
实战 OpenLaszlo 与 db4o
2012-07-01 00:30 727本文于去年年底完 ...
相关推荐
* 由于通用日志记录组件内部,会有几级的缓存调度处理,要结合全局消息中心进行配套启停使用详见Program.cs启动项,可根据配置信息,进行调度设置 * 日志写入接口自动实现线程数据同步,在不同的线程下写入日志...
.NET日志记录组件
Log4net日志记录组件-学习心得,例子 ,Log4net日志记录组件-学习心得,例子
简介基于浏览器端的console的日志记录组件。支持如下特性:日志级别设置;异常提交到服务器;提交环境信息;日志Tag过滤器;如何使用浏览器下的引用[removed][removed][removed] log4web.log("houyhea"); log4...
MVC下使用Elmah日志记录组件,博客介绍地址:http://www.cnblogs.com/jys509/p/4571298.html
go-logging一个简化的Go日志记录组件
NULL 博文链接:https://angrycoder.iteye.com/blog/940213
Delphi编写的日志记录组件源代码,从中可以学习自定义组件的一些技巧,如注册到组件面板、添加自定义图标等。 日志组件具有以下属性及方法: public { Public declarations } procedure AddLog(p_Info: string); /...
本压缩包内附带log4j-1.2.14和commons-logging-1.1.1,Java日志记录行业标准组件。不要分啦。鄙视开源组件还收费的猥琐鬼。
Delphi和Lazarus的日志记录组件。 版本3.3(02-05-2019)多线程,面向对象,缓冲安全。 即使您的应用程序崩溃,日志文件也将正确写入磁盘。 日志记录/解析/格式化和可选的视觉反馈工作不会占用您主线程的时间。 日志...
日志组件位于System.Database.dll中,项目引用命名空间(System.Logger)即可,日志组件提供五种级别的日志记录(DEBUG|INFO|WARN|ERROR|FATAL),最低DEBUG,最高FATAL,当配置的级别大于等于对应级别时,会自动记录...
HTTP输入插件日志记录组件。 这个插件: 使用HTTP端点从MinIO接收传入的JSON日志, 验证必需的JSON字段, 汇总日志记录指标, 将聚合指标刷新到已配置的Redis实例; 和, 将日志路由到已配置的日志目标,例如...
Log4net日志记录组件的使用步骤详解,需要的朋友可以参考一下
基于labview的日志记录,就是记录labview软件在运行过程当中人为的进行了哪些操作,将这些操作记录下来形成文件。
// Description: pb日志组件,把log4pb.pbd, callback.pbd加入到开发的libary列表中 // 1. log4pb调用演示例子, 思想仿log4j // 2. 集成对象到application, // 3. 组件文件: log4pb90.pdb + callback.pbd, // 4. ...
FLEX自定义的日历组件,带有日志记录功能FLEX自定义的日历组件,带有日志记录功能FLEX自定义的日历组件,带有日志记录功能FLEX自定义的日历组件,带有日志记录功能
Logging组件是微软实现的日志记录组件包括控制台(Console)、调试(Debug)、事件日志(EventLog)和TraceSource,但是没有实现最常用用的文件记录日志功能(可以用其他第三方的如NLog、Log4Net。之前写过NLog使用的文章)...
OpenTable日志记录组件 组件宪章 管理Logback配置以及与其他日志API的集成。 提供参考实现 提供OpenTable日志记录基础架构的Appender实现 除传统的String消息外,还允许记录结构化数据 otj-logging-core 核心模块...
轻松将您的变更日志包含为React组件 演示版 安装 npm install --save react-changelog 用法 import React , { Component } from " react " ; import ReactChangelog from " react-changelog " ; class Example ...