支持多线程的CLOG类

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
 注:在网上找到的,自己改了一点
log.h
#ifndef _LOG_H
#define _LOG_H

class CLog
{
public:
    CLog();
    
~CLog();

public:
    
void    InitLog(LPCTSTR lpszLogPath);        
    
void    Add(const TCHAR* fmt, ...);
    
void    AddString(LPCTSTR str);
protected:
    
enum {BUFSIZE = 3000};
    TCHAR        m_tBuf[BUFSIZE];
    
    CString     m_strLogPath;
    CRITICAL_SECTION  m_crit;
}
;

#endif

log.cpp
#include "stdafx.h"
#include 
"log.h"
#include 
<wchar.h>

CLog::CLog() 
{
    ::InitializeCriticalSection(
&m_crit);
}



CLog::
~CLog()
{
    ::DeleteCriticalSection(
&m_crit);
}


void CLog::InitLog(LPCTSTR lpszLogPath)   
{    
    m_strLogPath
=lpszLogPath;
}


void CLog::Add(const TCHAR* fmt, ...)
{
#ifdef _DEBUG
    
if (m_strLogPath.IsEmpty())
        
return ;
    
    
if (!AfxIsValidString(fmt, -1))
        
return ;

    ::EnterCriticalSection(
&m_crit);   
    
try      
    
{
        va_list argptr;
        va_start(argptr, fmt);
        _vsnwprintf_s(m_tBuf, BUFSIZE, fmt, argptr);
        va_end(argptr);
    }

    
catch (...)
    
{
        m_tBuf[
0= 0;
    }

    
    FILE 
*fp;
    _wfopen_s(
&fp, (LPCTSTR)m_strLogPath, _T("a"));
    
if (fp)
    
{
        fwprintf(fp,_T(
"%s:  "), AfxGetApp()->m_pszExeName);
        
        CTime ct ;
        ct 
= CTime::GetCurrentTime();
        fwprintf(fp,_T(
"%s : "),ct.Format("%m/%d/%Y %H:%M:%S"));
        fwprintf(fp, _T(
"%s "), m_tBuf);        
        fclose(fp);        
    }
    
    ::LeaveCriticalSection(
&m_crit);  
#endif
}



void CLog::AddString(LPCTSTR str)
{
#ifdef _DEBUG
    Add(_T(
"%s"), str);
#endif
}
Clog——基于C语言的日志系统设计 基于linux C设计的一款日志系统,支持多进程日志输出,支持多种日志输出方式 阅读详情

相关推荐

C++之标准错误流(cerr)和标准日志流(clog)

一.标准错误流(cerr)   预定义的对象 cerr 是 ostream 的一个实例。cerr 对象附属到标准错误设备,通常也是显示屏,但是 cerr 对象是非缓冲的,且每个流插入到 cerr 都会立即输出。 cerr 也是与流插入运算符 << 结合使用的,如下所示: 当上面的代码被编译和执行时,它会产生下列结果: 二.标准日志流(clog)   预定义的对象 clog 是 ostream 的一个实例。clog 对象附属到标准错误设备,通常也是显示屏,但是 clog 对象是缓冲的。这意

小勇博客 7022

CLog 日志

CLog 日志 简单方便 CLog 日志 简单方便 CLog 日志 简单方便 CLog 日志 简单方便 CLog 日志 简单方便 CLog 日志 简单方便

C++日志记录实践:VC6 MFC环境下CLog设计

本文还有配套的精品资源,点击获取 简介:本文深入探讨了在VC++和VC6 MFC框架下,如何实现一个C++的日志记录。日志的核心功能包括设置不同的日志等级、添加时间戳、格式化输出以及输出到多种目标。通过创建一个名为 CLog,并详细描述了其成员函数的设计与实现。例如, WriteLog 函数负责将日志等级和消息格式化后写入到文件,而 ...

weixin_36197669的博客 1677

CLog,C++编写的一个日志,与大家交流下

////////////////////////////////////////////README//////////////////////////////////////////////////// // DebugLog--write some log for debug // //初衷: 版本开发的时候,有些功能点是可以项目无关的,比如是解析某个文件;开发完成之后,测试的话, // // 需要整改项目程序运行、测试,功能点的触发条件比较麻烦。所以,有的时候,对于这样的功能点, // // 我会选择进行本地开发,然后再合到项目中去. // // 但是,每次功能点开发的时候,一般用的是printf直接打屏,但是项目中用的是写文件,所以移植 // // 的时候还需要进行不少改动. // // 于是,我就想自己写个log,可以与项目的日志函数进行适配。那么,上面的问题可以得到比较好的 // // 解决(或者说是规避)。 // //附注:我不知道这样做有没有意义,也就是根据自己的经验,试着做了下。经验不足,水平有限,肯定会 // // 导致设计不足,不对,甚至是整个设计没有意义。如果是这样,希望能不吝交流、赐教. // // EMail: hu__haifeng@163.com // ////////////////////////////////////////////////////////////////////////////////////////////////////// //Version :0.5 // //Description:该版本打造了基本的架构,并且实现了不带参数的打印日志(仅仅是字符串),可以进行监督的测试.// // 由于我项目经验有限,仅仅见过两种不同的项目日志分隔,所以也只能以此为参考,不一定可以 // // 适配其他项目日志函数. // //Adapter :可以用宏定义来进行适配。比如: // // #ifdef __CLOG_H__ // // #define DEBUG(VAR) mylog.Print(__FILE__, __LINE__, VAR, LOG_DEBUG) // // #else // // #define DEBUG(VAR) function //项目用的标准的日志函数. // // #endif // // // //Plan :1.0版本写成可以带参数的日志。2.0版本实现客户端、服务器版本(可以支持不同的进程写日志)。// //////////////////////////////////////////////////////////////////////////////////////////////////////

Clog的编译以及使用教程

clog日志的简单记录

xiaochuideai的博客 630

cerr和clog

cerr和clog两个错误输出流的介绍

满天繁星 3737

基于iLog3的实时日志实现

这个封装是为了不用跟傻X扯逼而创造的.......

reloner12的专栏 1144

跨平台c/c++日志记录 CLog (支持多线程)

转载自:http://www.mamicode.com/info-detail-1030520.html CLog.h #include <stdlib.h> #pragma once #ifndef _CLOG #define _CLOG #define CLOG_DEBUG 0 #define CLOG_INFO 1 #define CLOG_WARNING 2...

hnzwx888的专栏 1297

极简系列|日志模块-clog

日志作为应用程序调试和维护的基本手段被广泛使用,像是谷歌的glog,java领域的log4j,它们都是功能强大的大型日志中间件。可是,在特殊的领域,比如是嵌入式开发领域,由于资源的限制,可能不能直接应用这些“庞大大物”,这里要介绍的clog,十分适合资源受限的嵌入式系统,其由C语言开发,整个代码不到400行,但它的功能可以满足基本的开发需求。 clog基本属性: 支持日志级别设置(DEBUG|INFO|ERROR|FATAL) 支持多线程,是线程安全的。 日志输出路径可配置。 单个日志文件输出,并且日志是

飞翔de刺猬 1804

一个简单的clog

最近写代码的时候,想找一个好用点的日志库,选来选取发现都差不多,最后决定自己写一个简单的日志库,于是就有了clog 该日志库使用存c实现,源码发布在链接:https://gitee.com/doublebullet/c_log 使用非常简单 #ifdef WINDOWS #include <windows.h> #include <time.h> #include <io.h> #include <direct.h> #include "clog.h

weixin_41400449的博客 615

探索Clog:简洁高效的日志管理库

探索Clog:简洁高效的日志管理库 clog CLOG - The Common Lisp Omnificent GUI 项目地址: https://gitcode.com/gh_mirrors/cl/clog ...

gitblog_00011的博客 673

CLog,优化之前的

CLog,优化之前的

CLog一个用于记录日志的.rar

CLog一个用于记录日志的.rar

C LOG 日志生成函数

NULL 博文链接:https://w0a1yueer.iteye.com/blog/2123602

clog windows日志清除源码

clog windows 日志清除

visual C++实现MFC动态库运用debugview输出日志3:使用单例模式实现CLog

使用单例模式实现CLog 头文件: /************************************************************************ * 功能描述:日志. * 其它说明:使用单例模式实现 ************************************************************************/ ...

haimianjie2012的专栏 563

深入理解Ubicloud日志聚合:从Clog到Fluentd的完整数据链路

在分布式云环境中,日志分散在数百个服务实例与虚拟机中,传统SSH登录查看日志的方式平均需要37分钟定位单条错误,而Ubicloud的集中式日志架构可将问题诊断时间压缩至90秒内。本文将系统剖析Ubicloud自研Clog日志框架的设计原理,以及如何通过Fluentd构建企业级日志聚合系统,解决云原生环境下日志采集延迟、格式混乱、存储成本失控三大核心痛点。 读完本文你将掌握: - Ubicloud...

gitblog_00332的博客 720

开源项目推荐:clog - Go语言的通道日志包

开源项目推荐:clog - Go语言的通道日志包 1. 项目基础介绍 clog 是一个为 Go 语言设计的通道(channel)基于日志包。它利用 Go 语言的通道特性提供了一种在高度并发环境下的线程安全日志记录机制。该项目的目标是简化日志管理,同时确保在多线程程序中日志的准确性和效率。 2. 项目核心功能 多级日志记录:clog 支持多个日志级别,包括 Trace、Info、Warn、Erro...

gitblog_00143的博客 293

CLog做了些许改进

CLog做了一些改进 andy 2016-9-11 shenzhen 原文来自:http://blog.csdn.net/sunflover454/article/details/49758801 // Main.cpp : Defines the entry point for the console application. // #include "stdafx.h" #i

tajon1226的专栏 717
上一篇: 将程序的配置选项写到注册表
下一篇: 将manifest文件嵌入到资源文件中
karl_max
博客等级 码龄19年 45粉丝 46原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值