怎么查网站做百度竞价信息,软件应用技术学什么,专业建设网站专家,wordpress d8 4.1知识点备忘录
其实也没啥
操作记录
在乌邦图上写的#xff0c;先是模仿sylar创建了目录 进入sylar文件夹#xff0c;有今天写的log.h头文件 其中log_test.cpp是为了测试log.h能否正常运行建的#xff0c;只是个测试文件 log.h写了三个类#xff0c;日志级别#xff0…知识点备忘录
其实也没啥
操作记录
在乌邦图上写的先是模仿sylar创建了目录 进入sylar文件夹有今天写的log.h头文件 其中log_test.cpp是为了测试log.h能否正常运行建的只是个测试文件 log.h写了三个类日志级别日志事件日志器 log.h头文件如下
#ifndef __SYLAR_LOG_H_
#define __SYLAR_LOG_H_#include string
#include stdint.h
#include memory
#include iostream//日志级别
class LogLevel{
public:enum Level{UNKNOW 0,//未知DEBUG 1,//调试INFO 2,//普通WARN 3,//警告ERROR 4,//错误FATAL 5//灾难};
};//日志事件
//通常包含日志发生的具体信息
class LogEvent{
public://一个智能指针typedef std::shared_ptrLogEvent ptr;//构造函数LogEvent(LogLevel::Level level//日志级别//日志发生源代码文件名日志发生的源代码中的行号自程序启动以来的时间, const char* file, int32_t line, uint32_t elapse//产生日志事件的线程ID产生日志事件的协程ID日志事件的时间戳, uint32_t thread_id, uint32_t fiber_id, uint64_t time);//成员函数//1.返回日志发生的源文件名const char* getFile() const {return m_file;}//2.返回日志发生的代码行号int32_t getLine() const {return m_line;}//3.返回日志事件发生的事件单位msuint32_t getElapse() const {return m_elapse;}//4.返回产生日志事件的线程IDuint32_t getThreadId() const {return m_threadId;}//5.返回产生日志事件的协程IDuint32_t getFiberId() const {return m_fiberId;}//6.返回日志事件的时间戳uint64_t getTime() const {return m_time;}//7.返回日志事件的级别LogLevel::Level getLevel() const {return m_level;}private:const char* m_file nullptr;//表示日志事件的源文件名int32_t m_line 0;//表示在源文件中的行号uint32_t m_elapse 0;//表示程序启动到现在的msuint32_t m_threadId 0;//表示产生日志事件的线程IDuint32_t m_fiberId 0;//表示产生日志事件的协程IDuint64_t m_time;//表示日志事件产生的时间戳LogLevel::Level m_level;//表示日志级别
};//日志构造函数的实现
LogEvent::LogEvent(LogLevel::Level level, const char* file, int32_t line, uint32_t elapse, uint32_t thread_id, uint32_t fiber_id, uint64_t time):m_level(level),m_file(file),m_line(line),m_elapse(elapse),m_threadId(thread_id),m_fiberId(fiber_id),m_time(time){
}//日志器
class Logger{
public://定义智能指针操作Logger的对象typedef std::shared_ptrLogger ptr;//构造函数//未指定则给个默认名称root这里引用生为了避免不必要的拷贝操作使用const是为了规定这个名称在内部不会被改变Logger(const std::string name root);//成员函数const std::string getName() const {return m_name;}LogLevel::Level getLevel() const {return m_level;}void setLevel(LogLevel::Level val) {m_level val;}//定义一个输出日志的方法传入想要查看的最大日志级别void log(LogEvent::ptr event);
private://m_开头生一个私有变量的规范std::string m_name;//日志器能输出的最大日志级别LogLevel::Level m_level;
};
//实现构造函数
Logger::Logger(const std::string name):m_name(name)//这里指定日志器一个自身默认级别是DEBUG,m_level(LogLevel::DEBUG){
}
//实现成员函数log()即输出方法
void Logger::log(LogEvent::ptr event){if(event-getLevel() m_level)std::cout 日志输出模拟 std::endl;
}#endif
log_test.cpp文件如下
#include log.h
//测试
int main(int argc, char** argv){//创建一个日志事件LogEvent::ptr event(new LogEvent(LogLevel::WARN, 0, 1, 2, 3, 4, time(0)));Logger::ptr lg(new Logger(hkq));lg-log(event);lg-setLevel(LogLevel::ERROR);lg-log(event);return 0;
}正常打印输出了日志输出模拟运行成功