MyLib
This commit is contained in:
98
Log/LogL.h
Normal file
98
Log/LogL.h
Normal file
@ -0,0 +1,98 @@
|
||||
#ifndef LXZL_LOGL_H
|
||||
#define LXZL_LOGL_H
|
||||
/**
|
||||
* 日志生成模块
|
||||
* 目标:支持同步、异步两种方式;支持多种输出方式(控制台、文件、udp、tcp)
|
||||
*/
|
||||
#include "UDP.h"
|
||||
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <queue>
|
||||
#include <mutex>
|
||||
#include <condition_variable>
|
||||
|
||||
enum LogType{
|
||||
LTStd,//日志输出到控制台
|
||||
LTTxt,//日志输出到文本文件
|
||||
LTUdp,//日志输出到UDP
|
||||
LTTcp,//日志输出到TCP
|
||||
};
|
||||
enum LogLevel{
|
||||
LLDebug,//调试
|
||||
LLInfo,//一般
|
||||
LLWarn,//警告
|
||||
LLError,//错误
|
||||
};
|
||||
|
||||
|
||||
class LogL {
|
||||
public:
|
||||
/**
|
||||
* 日志构造函数
|
||||
* @param logType 日志输出类型
|
||||
* @param isSync true:同步/false:异步
|
||||
* @param logPath 输出地址(LTStd:无;LTTxt:填写路径;LTUdp:填写ip端口)
|
||||
*/
|
||||
explicit LogL(LogType logType, bool isSync = true, std::string logPath = "");
|
||||
~LogL();
|
||||
|
||||
/**
|
||||
* 调试日志
|
||||
* @param str 日志内容
|
||||
*/
|
||||
void debug(const std::string &str);
|
||||
void info(const std::string &str);
|
||||
void warn(const std::string &str);
|
||||
void error(const std::string &str);
|
||||
|
||||
private:
|
||||
|
||||
void logThread();
|
||||
|
||||
void log(const std::string &str, LogLevel level);
|
||||
|
||||
|
||||
private:
|
||||
std::thread *m_thread;
|
||||
bool m_thread_run;
|
||||
bool m_isSync;//是否同步
|
||||
LogType m_logType;//输出类型
|
||||
std::string m_logPath;//输出地址
|
||||
std::queue<std::string> m_log_queue;//日志容器
|
||||
std::mutex m_mtx;
|
||||
std::condition_variable m_cond_empty;//空时停止
|
||||
std::condition_variable m_cond_full;//满时停止
|
||||
std::ofstream *m_file;
|
||||
int32_t m_today;
|
||||
UDPSender *m_sender;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* 创建目录
|
||||
* @param path 路径
|
||||
* @return bool是否创建成功
|
||||
*/
|
||||
bool myMkdir(const char *path);
|
||||
|
||||
/**
|
||||
* 获取当前日期时间
|
||||
*/
|
||||
class myDateTime {
|
||||
public:
|
||||
myDateTime();
|
||||
|
||||
int32_t year;
|
||||
int32_t month;
|
||||
int32_t day;
|
||||
int32_t hour;
|
||||
int32_t minute;
|
||||
int32_t second;
|
||||
|
||||
std::string toDate() const;
|
||||
std::string toTime() const;
|
||||
std::string toDateTime() const;
|
||||
};
|
||||
|
||||
#endif //LXZL_LOGL_H
|
||||
Reference in New Issue
Block a user