返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >怎么使用C++ cmake实现日志类
  • 204
分享到

怎么使用C++ cmake实现日志类

2023-07-05 10:07:33 204人浏览 安东尼
摘要

本文小编为大家详细介绍“怎么使用c++ cmake实现日志类”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用C++ cmake实现日志类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。L

本文小编为大家详细介绍“怎么使用c++ cmake实现日志类”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用C++ cmake实现日志类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Logger.h

#pragma once#include <fstream>#include <sstream>#include <iOStream>#include <string>#define NAME_SPACE_START(name) namespace name {#define NAME_SPACE_END }#ifndef _LOGGER_#define _LOGGER_NAME_SPACE_START(Log)class Logger{public:    Logger() = delete;    Logger(const Logger&) = delete;    Logger(std::string logFilePath = "", std::string logFileName = "");    ~Logger() = default;    void LogStart(std::string context);    void LogEnd(std::string context);    void Debug(std::string context);    void Error(std::string context);    void Warning(std::string context);    void Info(std::string context);    bool OpenFile(std::string absolutePath);    bool CloseFile();    std::stringstream GetCurrentTime();public:    static std::string m_logFilePath;    static std::string m_title;private:    std::ofstream _file;    std::string absPath;};NAME_SPACE_END#endif //!_LOGGER_

Logger.cpp

#include "logger.h"#include <ctime>#include <exception>#include <fstream>#include <ios>#include <iterator>#include <ostream>#include <sstream>#include <streambuf>#include <string>#include <time.h>std::string basePath = "C:\\";  //日志路径std::string baseTitle = "logger.txt"; //日志文件名NAME_SPACE_START(Log)std::string Logger::m_logFilePath = basePath;std::string Logger::m_title = baseTitle;Logger::Logger(std::string logFilePath, std::string logFileName){    std::string absolutePath = "";    if(logFilePath != ""){        absolutePath += logFilePath;    }    else{        absolutePath += Logger::m_logFilePath;    }    if(logFileName != ""){        absolutePath += logFileName;    }    else{        absolutePath += Logger::m_title;    }    this->absPath = absolutePath;}void Logger::LogStart(std::string context = ""){    if(!this->OpenFile(this->absPath)) return;    std::stringstream ss=GetCurrentTime();    _file<<ss.str()         <<"------------------------------Log Start"         <<" "<<context<<" "         <<"------------------------------"<<std::endl;    this->CloseFile();}void Logger::LogEnd(std::string context = ""){    if(!this->OpenFile(this->absPath)) return;    std::stringstream ss=GetCurrentTime();    _file<<ss.str()         <<"------------------------------Log End"         <<" "<<context<<" "         <<"------------------------------"<<std::endl;    this->CloseFile();}void Logger::Debug(std::string context = ""){    if(!this->OpenFile(this->absPath)) return;    std::stringstream ss=GetCurrentTime();    _file<<ss.str()         <<"[Log Debug]:"         <<context<<std::endl;    this->CloseFile();}void Logger::Error(std::string context = ""){    if(!this->OpenFile(this->absPath)) return;    std::stringstream ss=GetCurrentTime();    _file<<ss.str()         <<"[Log Error]:"         <<context<<std::endl;    this->CloseFile();}void Logger::Warning(std::string context = ""){    if(!this->OpenFile(this->absPath)) return;    std::stringstream ss=GetCurrentTime();    _file<<ss.str()         <<"[Log Warning]:"         <<context<<std::endl;    this->CloseFile();}void Logger::Info(std::string context = ""){    if(!this->OpenFile(this->absPath)) return;    std::stringstream ss=GetCurrentTime();    _file<<ss.str()         <<"[Log Info]:"         <<context<<std::endl;    this->CloseFile();}bool Logger::OpenFile(std::string absolutePath){    try {        this->_file.open(absolutePath, std::ios::out | std::ios::app);        if(!_file.is_open()){            return false;        }        return true;    } catch (std::exception ex) {        return false;    }}bool Logger::CloseFile(){    try{        this->_file.close();        return true;    }    catch(std::exception ex){        return false;    }}std::stringstream Logger::GetCurrentTime(){    std::stringstream ss;    time_t now=time(nullptr);    tm curr_tm;    localtime_s(&curr_tm, &now);    ss<<curr_tm.tm_year<<"-"<<curr_tm.tm_mon<<"-"<<curr_tm.tm_yday      <<" "<<curr_tm.tm_hour<<":"<<curr_tm.tm_min<<":"<<curr_tm.tm_sec      <<" ";    return ss;}NAME_SPACE_END

main.cpp

#include <iostream>#include "logger.h"using namespace std;using namespace Log;int main(){    Logger log("F:/Visual-Studio-practice/vscode/mySource/");    log.LogStart("main");    log.Debug("main");    log.Warning("main");    log.Error("main");    log.Info("main");    log.LogEnd("main");    return 0;}

日志图片

怎么使用C++ cmake实现日志类

本程序使用cmake生成

cmake文件

cmake_minimum_required(VERSION 3.0.0)
project(logger CXX)
set(CMAKE_INSTALL_PREFIX "F:/Visual-Studio-practice/vscode/mySource/build")
file(GLOB SOURCE_FILE ./src/logger.cpp)
add_library(logger_static STATIC ${SOURCE_FILE})
target_include_directories(logger_static PUBLIC header)

最外层cmake

cmake_minimum_required(VERSION 3.0.0)
project(MAIN VERSION 0.1.0)
set(CMAKE_BUILD_TYPE Debug)
set(UTILS_PATH ${PROJECT_SOURCE_DIR}/utils)
add_subdirectory(utils/Log)
add_executable(MAIN main.cpp)
include_directories(${UTILS_PATH}/Log/header)
target_link_libraries(MAIN logger_static)
enable_testing()
add_test(NAME MAIN_TEST COMMAND MAIN)

目录结构如下

怎么使用C++ cmake实现日志类

读到这里,这篇“怎么使用C++ cmake实现日志类”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网其他教程频道。

--结束END--

本文标题: 怎么使用C++ cmake实现日志类

本文链接: https://lsjlt.com/news/351160.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用C++ cmake实现日志类
    本文小编为大家详细介绍“怎么使用C++ cmake实现日志类”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用C++ cmake实现日志类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。L...
    99+
    2023-07-05
  • C++cmake实现日志类的示例代码
    Logger.h #pragma once #include <fstream> #include <sstream> #include <iostr...
    99+
    2023-03-09
    C++ cmake实现日志类 C++ cmake日志类 C++ 日志类
  • springboot怎么利用@Aspect实现日志工具类
    这篇文章主要介绍了springboot怎么利用@Aspect实现日志工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot怎么利用@Aspect实现日志工具类文章都会有所收获,下面我们一起来看...
    99+
    2023-06-29
  • 使用LogAnalyzer怎么实现一个日志系统
    使用LogAnalyzer怎么实现一个日志系统,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、部署LAMP环境1、安装CentOS操作系统,...
    99+
    2024-04-02
  • C#使用log4net打日志
    首先打开vs,右击解决方案,点击管理解决方案的Nuget包管理 然后我们点击浏览,搜索log4net,进行安装 然后我们需要新建一个名为log4net.config的配置文件,在...
    99+
    2024-04-02
  • Laravel怎么使用Observer实现日志管理模块
    这篇文章主要介绍“Laravel怎么使用Observer实现日志管理模块”,在日常操作中,相信很多人在Laravel怎么使用Observer实现日志管理模块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Lar...
    99+
    2023-06-20
  • C#使用日志组件log4net
    目录一、概述1、下载与版本2、Log4net的结构3、日志的级别二、建立log4net配置文件1、配置文件2、Logger3、Appender4、PatternLayout中的转换模...
    99+
    2024-04-02
  • C#使用log4net记录日志
    一、Nuget安装log4net --> Install-Package log4net 二、在AssemblyInfo.cs文件中添加log4net.dll的参数。 [a...
    99+
    2024-04-02
  • C#怎么使用Log4.net记录日志文件
    这篇文章主要讲解了“C#怎么使用Log4.net记录日志文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么使用Log4.net记录日志文件”吧!一、简介1.1 Log4.net优点几...
    99+
    2023-06-30
  • 使用log4j MDC实现日志追踪
    目录log4j MDC实现日志追踪1、新建线程处理类 ThreadContext2、添加工具类TraceUtil3、添加ContextFilter4、在webConfiguriati...
    99+
    2024-04-02
  • 怎么在Spring 5.0中使用log4j2实现日志管理
    本篇文章为大家展示了怎么在Spring 5.0中使用log4j2实现日志管理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。先引入log4j 2的三个jar包log4j-api-2.10.0.jarl...
    99+
    2023-05-30
    spring log4j
  • Nginx怎么实现日志切割
    这篇文章主要介绍“Nginx怎么实现日志切割”,在日常操作中,相信很多人在Nginx怎么实现日志切割问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Nginx怎么实现日志切割”...
    99+
    2024-04-02
  • java日志LoggerFactory.getLogger怎么使用
    本篇内容主要讲解“java日志LoggerFactory.getLogger怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java日志LoggerFactory.getLogger怎么使...
    99+
    2023-07-05
  • C++日志库log4cplus如何使用
    本篇内容介绍了“C++日志库log4cplus如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!编译&&安装下载完成在u...
    99+
    2023-07-05
  • C#中使用MicrosoftUnity记录日志
    需要记录日志的地方包括:进入方法的时候,传参的时候,统计执行时间,方法返回参数的时候,退出语句块的时候,出现异常的时候,等等。先来体验不使用Micirosoft Unity进行日志记...
    99+
    2024-04-02
  • 怎么使用Aop的方式实现自动日志记录
    本篇内容介绍了“怎么使用Aop的方式实现自动日志记录”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用Aop的方式实现自动日志记录自动日志记...
    99+
    2023-06-30
  • 使用java注解和aspectj AOP怎么实现打印日志
    本篇文章给大家分享的是有关使用java注解和aspectj AOP怎么实现打印日志,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先需要自定义注解:systemName:表示该...
    99+
    2023-06-06
  • 使用logback实现日志打印过滤
    logback日志打印过滤 1.只打印sql语句以及参数 <?xml version="1.0" encoding="UTF-8" ?> <co...
    99+
    2024-04-02
  • 使用MDC实现日志链路跟踪
    目录1.原理2.实现3.过滤器4.logback.xml5.返回体6.效果日志前言: 在微服务环境中,我们经常使用Skywalking、CAT等去实现整体请求链路的追踪,但是这个整体...
    99+
    2024-04-02
  • Python怎么实现日志实时监测
    这篇文章主要讲解了“Python怎么实现日志实时监测”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么实现日志实时监测”吧!介绍观察者模式:是一种行为型设计模式。主要关注的是对象...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作