在CentOS系统中使用C++进行日志记录,可以采用多种方法。以下是一些常用的日志库和示例代码:
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
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
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++进行日志记录的方法。你可以根据自己的需求选择合适的日志库。