如何在程序中写一个日志程序,linux,c++

在Linux中使用C++编写日志程序,你可以选择多种方式,但最常见的做法是使用标准库中的文件操作功能,或者利用现有的日志库,如spdlog、log4cpp等。以下是一个使用标准库文件操作功能的基本日志程序的示例:

#include <iostream>  
#include <fstream>  
#include <string>  
#include <ctime>  
#include <iomanip>
class Logger {  
private:  
    std::ofstream logFile;  
    std::string logFilePath;  
  
public:  
    Logger(const std::string& filePath) : logFilePath(filePath) {  
        // 打开日志文件,如果文件不存在则创建它  
        logFile.open(logFilePath, std::ios::out | std::ios::app);  
        if (!logFile.is_open()) {  
            std::cerr << "无法打开日志文件: " << logFilePath << std::endl;  
        }  
    }  
  
    ~Logger() {  
        // 析构函数中关闭日志文件  
        if (logFile.is_open()) {  
            logFile.close();  
        }  
    }  
  
    void log(const std::string& message, const std::string& level = "INFO") {  
        // 获取当前时间并格式化  
        time_t now = time(0);  
        tm *ltm = localtime(&now);  
  
        std::ostringstream ss;  
        ss << std::put_time(ltm, "%Y-%m-%d %H:%M:%S") << " [" << level << "] " << message << std::endl;  
  
        // 将格式化后的日志信息写入文件  
        if (logFile.is_open()) {  
            logFile << ss.str();  
        } else {  
            std::cerr << "日志文件未打开,无法记录日志信息。" << std::endl;  
        }  
    }  
  
    void debug(const std::string& message) {  
        log(message, "DEBUG");  
    }  
  
    void info(const std::string& message) {  
        log(message, "INFO");  
    }  
  
    void warning(const std::string& message) {  
        log(message, "WARNING");  
    }  
  
    void error(const std::string& message) {  
        log(message, "ERROR");  
    }  
  
    void critical(const std::string& message) {  
        log(message, "CRITICAL");  
    }  
};
int main() {  
    Logger logger("app.log"); // 创建一个日志对象,日志文件名为app.log  
  
    logger.info("程序启动。"); // 记录一条信息级别的日志  
    logger.debug("这是一个调试信息。"); // 记录一条调试级别的日志  
    logger.warning("这是一个警告信息。"); // 记录一条警告级别的日志  
    logger.error("发生了一个错误!"); // 记录一条错误级别的日志  
    logger.critical("程序即将退出!"); // 记录一条严重级别的日志  
  
    return 0;  
}

在这个例子中,Logger 类封装了日志文件的打开、关闭和写入操作。每个日志级别的方法(如 info, debug, warning, error, critical)都调用 log 方法来写入一条日志,同时附带上日志级别。日志信息包括时间戳、日志级别和日志消息。

相关推荐

  1. 如何程序一个日志程序linux,c++

    2024-03-11 19:38:03       48 阅读
  2. 【chisel】如何用chisel一个上升沿检测程序

    2024-03-11 19:38:03       32 阅读
  3. 一个简单的程序

    2024-03-11 19:38:03       31 阅读
  4. 如何 windows 下运行 linux 程序

    2024-03-11 19:38:03       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 19:38:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 19:38:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 19:38:03       82 阅读
  4. Python语言-面向对象

    2024-03-11 19:38:03       91 阅读

热门阅读

  1. AI辅助研发:引领科技创新的未来之路

    2024-03-11 19:38:03       50 阅读
  2. JVM内存结构

    2024-03-11 19:38:03       38 阅读
  3. Kafka - This server does not host this topic-partition

    2024-03-11 19:38:03       40 阅读
  4. TensorFlow简要介绍

    2024-03-11 19:38:03       39 阅读
  5. 掌握uboot使用的2个关键点:命令和环境变量

    2024-03-11 19:38:03       36 阅读
  6. CCIE路由交换考试指南

    2024-03-11 19:38:03       45 阅读
  7. [2024年]-flink面试真题(四)

    2024-03-11 19:38:03       46 阅读
  8. react recharts饼图 及配置项

    2024-03-11 19:38:03       36 阅读
  9. 【计算机网络教程】第一章课后习题答案

    2024-03-11 19:38:03       42 阅读
  10. linux系统nginx常用命令

    2024-03-11 19:38:03       44 阅读
  11. Claude与ChatGPT的对比

    2024-03-11 19:38:03       40 阅读
  12. uniapp地图围栏代码

    2024-03-11 19:38:03       43 阅读
  13. mysql笔记:5. 运算符

    2024-03-11 19:38:03       37 阅读