#include <windows.h>
#include "MyLogger.h"
#include <fstream>
#include <shellapi.h>
#include <string>
#include <shlobj.h>
#pragma comment(lib, "shell32.lib")
//获取桌面文件夹 C:\Users\ajz\Desktop
static std::string GetDesktopFolder()
{
char path[255];
SHGetSpecialFolderPathA(0, path, CSIDL_DESKTOPDIRECTORY, 0);
std::string rlt = path;
return rlt;
}
MyLogger* MyLogger::INSTANCE = NULL;
MyLogger* MyLogger::getInstance()
{
if (INSTANCE == NULL)
{
INSTANCE = new MyLogger;
}
return INSTANCE;
}
MyLogger::MyLogger()
{
}
static void PrintDebug(char* pMsg)
{
/*FILE *p = fopen("debuglog.log", "a+");
if (NULL != p)
{
fprintf(p, pMsg);
fclose(p);
}*/
//打开进程锁
HANDLE hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, TEXT("C29A27CD-DDC1-4DE7-A53F-7945C07FCDB4"));
//创建进程锁
if (hMutex == NULL)
{
hMutex = CreateMutex(NULL, false, TEXT("C29A27CD-DDC1-4DE7-A53F-7945C07FCDB4"));
}
//获取进程锁
DWORD ts = WaitForSingleObject(hMutex, INFINITE);
if (WAIT_OBJECT_0 == ts)
{
// 进行数据操作,下面是简单举例
std::string filename = GetDesktopFolder() + "/内存暂用调试日志分析.txt";
std::ofstream ofile;
ofile.open(filename.c_str(), std::ios::app);
ofile << pMsg;
ofile.close();
}
// 操作完成后释放进程锁
ReleaseMutex(hMutex);
if (hMutex != NULL)
{
CloseHandle(hMutex);
}
}
void MyLogger::info(char* pStrMsg)
{
#if DEBUG_LOG_FLAG
PrintDebug(pStrMsg);
#endif
}
MyLogger::~MyLogger()
{
if (INSTANCE)
{
delete INSTANCE;
}
}
LogSystem简易日志记录
需积分: 0 105 浏览量
更新于2024-04-27
收藏 1KB 7Z 举报
在IT行业中,日志系统是不可或缺的一部分,它用于记录应用程序运行过程中的事件、错误和调试信息,以便在问题出现时进行排查和分析。"LogSystem简易日志记录"的主题涉及了自定义日志记录器的设计与实现,我们将深入探讨这个话题。
`MyLogger.cpp`和`MyLogger.h`这两个文件名表明我们正在处理一个名为"MyLogger"的日志类的源代码和头文件。通常,`.cpp`文件包含了类的实现细节,而`.h`文件则声明了类的接口,供其他模块引用。
在`MyLogger.h`中,我们可以预见到类的定义,包括类的属性和方法。一个简单的日志系统可能会包含以下元素:
1. 日志级别:如DEBUG、INFO、WARN、ERROR和FATAL,允许用户根据需要选择记录不同严重程度的信息。
2. 日志格式:定义日志输出的样式,包括时间戳、级别标识、日志消息等。
3. 输出目标:可能包括控制台、文件、网络甚至数据库,便于在不同的场景下使用。
4. 锁机制:确保多线程环境下的日志安全,防止日志记录时的数据冲突。
在`MyLogger.cpp`中,我们需要实现这些功能,例如:
- 日志级别的设置和检查,可能通过枚举或常量定义。
- 日志输出函数,接收字符串参数,根据日志级别选择是否记录,并按指定格式写入输出目标。
- 文件日志,可能需要打开和关闭文件,以及处理文件滚动(如日志文件大小达到一定限制后创建新文件)。
- 多线程安全,可以使用互斥锁(mutex)或其他并发控制机制来确保同步。
此外,日志系统的性能优化也是关键,尤其是在高并发环境下。这可能涉及到缓冲区的使用,将多个日志条目一次性写入,减少磁盘I/O操作,或者使用异步写入机制。
为了方便调试,`MyLogger`可能还包含开关,让用户在生产环境中关闭不必要的日志输出,以提高性能。同时,日志记录应该具有可扩展性,方便添加新的输出目标或格式化选项。
`LogSystem简易日志记录`项目旨在设计一个简单易用且功能完备的日志系统,通过`MyLogger`类实现日志记录的基本功能,包括日志级别管理、格式化输出、多线程安全以及可能的输出目标扩展。理解并实现这样一个系统有助于提升对软件工程中日志管理和调试的理解。


插件开发
- 粉丝: 8217
最新资源
- 最新毕业论文基于PLC的变频恒压供水系统的设计.doc
- 国家开放大学电大《信息技术应用》网络核心课形考网考作业及答案.docx
- 中职VB课程中递归算法教学探索和思考-最新教育文档(可编辑修改版)..pdf
- 基于单片机的数控稳压电源毕业设计.doc
- F28335电机控制:涵盖有感与无感永磁同步电机控制算法的实验例程
- MVB总线在地铁列车控制系统中的应用.doc
- 计算机专业毕业设计任务书.doc
- 网络IP地址的计算方法.doc
- 嵌入式图形处理器设计.doc
- 网优中心创建集中化室分网络全生命周期管理新体系1.ppt
- 三相交错并联Buck电路双闭环控制策略的MATLAB Simulink仿真研究
- 专题讲座资料(2021-2022年)单片机红外线报警.doc
- 2023年整数规划分支定界法MATLAB程序.doc
- 高校信息化解决方案(PPT34页).pptx
- 软考信息系统集成项目经理学习笔记汇总.doc
- 软件系统分析与设计DOC.doc