centos

CentOS C++如何进行日志记录

小樊
46
2025-07-10 16:42:04
栏目: 编程语言

在CentOS系统中使用C++进行日志记录,可以采用多种方法。以下是一些常用的日志库和示例代码:

1. 使用 spdlog

spdlog 是一个非常流行且高效的C++日志库。

安装 spdlog

你可以通过包管理器安装 spdlog

sudo yum install spdlog-devel

示例代码

#include "spdlog/spdlog.h"
#include "spdlog/sinks/stdout_color_sinks.h"

int main() {
    // 创建一个控制台日志记录器
    auto console = spdlog::stdout_color_mt("console");

    // 记录不同级别的日志
    console->info("Welcome to spdlog!");
    console->warn("Some warning message");
    console->error("Some error message");

    return 0;
}

编译和运行

g++ -std=c++11 -o log_example log_example.cpp -lspdlog
./log_example

2. 使用 log4cpp

log4cpp 是另一个流行的C++日志库,提供了丰富的功能。

安装 log4cpp

你可以通过源码编译安装 log4cpp

wget http://archive.apache.org/dist/logging/log4cpp/log4cpp-0.9.9.tar.gz
tar xvf log4cpp-0.9.9.tar.gz
cd log4cpp-0.9.9
mkdir build && cd build
cmake ..
make
sudo make install

示例代码

#include <log4cpp/Category.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/OstreamAppender.hh>
#include <log4cpp/Priority.hh>

int main() {
    // 创建一个文件日志记录器
    log4cpp::Appender* appender = new log4cpp::FileAppender("default", "example.log");
    appender->setLayout(new log4cpp::PatternLayout());
    appender->getLayout()->setConversionPattern("%d [%p] %m%n");

    log4cpp::Category& root = log4cpp::Category::getRoot();
    root.addAppender(appender);
    root.setPriority(log4cpp::Priority::INFO);

    // 记录不同级别的日志
    root.info("Welcome to log4cpp!");
    root.warn("Some warning message");
    root.error("Some error message");

    delete appender;
    return 0;
}

编译和运行

g++ -std=c++11 -o log4cpp_example log4cpp_example.cpp -llog4cpp
./log4cpp_example

3. 使用标准库 iostream

如果你不想使用第三方库,可以使用C++标准库中的 iostream 进行简单的日志记录。

示例代码

#include <iostream>
#include <fstream>
#include <ctime>

void logMessage(const std::string& message, const std::string& filename = "log.txt") {
    std::ofstream logFile(filename, std::ios::app);
    if (logFile.is_open()) {
        time_t now = time(0);
        char* dt = ctime(&now);
        logFile << "[" << dt << "] " << message << std::endl;
        logFile.close();
    } else {
        std::cerr << "Unable to open log file." << std::endl;
    }
}

int main() {
    logMessage("Welcome to standard logging!");
    logMessage("Some warning message");
    logMessage("Some error message");

    return 0;
}

编译和运行

g++ -std=c++11 -o std_log_example std_log_example.cpp
./std_log_example

以上是几种在CentOS系统中使用C++进行日志记录的方法。你可以根据自己的需求选择合适的日志库。

0
看了该问题的人还看了