如何在程序中写一个日志程序,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 方法来写入一条日志,同时附带上日志级别。日志信息包括时间戳、日志级别和日志消息。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑暗森林里的葱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值