logger 日志类 unicode

博客内容涉及了logger日志类的实现,包括logger.c和logger.h的源代码文件,以及sync.h头文件,说明了如何在主函数中初始化工作路径以确保日志记录的正确性。
摘要由CSDN通过智能技术生成

logger.c

#include "stdafx.h"
#include <cstdio>
#include "logger.h"

using namespace std;
//extern CServerInterface *ExtServer;
Logger ExtLogger;

extern string         workingDir_;
LPCWSTR String2Wstring(const string s)
{
	//wstring wszStr;//LPCWSTR wszStr;//wstring wszStr;
	int len = s.length();
	int lenbf = MultiByteToWideChar(CP_ACP, 0, s.c_str(), len, NULL, NULL);
	LPWSTR lpwszStr = new wchar_t[lenbf+1];
	MultiByteToWideChar(CP_ACP, 0, s.c_str(), -1, lpwszStr, lenbf * sizeof(wchar_t));
	lpwszStr[len] = 0;
	return lpwszStr;
}
Logger::Logger(void)
	/*:logName_("plugin_log.log")*/
{
}


Logger::~Logger(void)
{
	sync_.Lock();

	if (file_.is_open())
	{
		file_.flush();
		file_.close();
	}

	sync_.Unlock();
}


void Logger::Initialize()
{
	SYSTEMTIME st = {0};
	GetLocalTime(&st);
	char filename[32] = {0};
	string tmp;
	sync_.Lock();
	logDir_ = workingDir_ + "logs";
	CreateLogDir();

	logFileDate_ = st.wDay;
	sprintf_s(filename, 32, "%04d%02d%02d.log", st.wYear, st.wMonth, st.wDay);
	tmp = filename;
	logFileName_ = logDir_ + "\\" + tmp;

	//--- check file
	if (file_.is_open())
	{
		file_.close();
	}

	file_.open(logFileName_, fstream::out | fstream::app | fstream::ate);
	sync_.Unlock();
}

void Logger::CreateLogDir()
{

	LPCWSTR logdirs = String2Wstring(logDir_);
	CreateDirectory(logdirs, NULL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值