📅  最后修改于: 2023-12-03 14:39:49.524000             🧑  作者: Mango
C++中的clog是一个用于输出日志信息的类。与cout一样,clog也是一个输出流,不同之处在于clog是一个缓冲的流,它的作用是将输出的信息写入缓冲区,直到缓冲区填满或者手动刷新缓冲区时才输出。
使用clog输出日志信息,只需要包含头文件<iostream>
,然后使用std::clog
来代替std::cout
即可。
#include <iostream>
int main() {
std::clog << "this is a log message" << std::endl;
}
输出:
this is a log message
和cout不同,clog还可以设置日志级别和输出流。C++标准库提供了五个日志级别,分别是:
std::ios_base::goodbit
,表示成功状态std::ios_base::eofbit
,表示已经到达了文件的末尾std::ios_base::failbit
,表示读写操作发生了错误std::ios_base::badbit
,表示发生了严重的错误std::ios_base::app
,表示数据添加到输出流中,而不是覆盖之前的数据可以使用std::clog.setstate()
设置日志级别:
#include <iostream>
int main() {
std::clog.setstate(std::ios_base::failbit);
std::clog << "this is a log message" << std::endl;
}
此时输出为空,因为设置了failbit
日志级别。
C++中的clog还可以设置日志的格式,包括时间戳、文件名和行号等。需要使用std::put_time()
函数和__FILE__
和__LINE__
预处理宏。
#include <iostream>
#include <iomanip>
#include <ctime>
int main() {
std::time_t now = std::time(nullptr);
std::clog << std::put_time(std::localtime(&now), "%F %T") << " "
<< __FILE__ << ":" << __LINE__ << " "
<< "this is a log message" << std::endl;
}
输出:
2021-07-27 13:28:10 main.cpp:10 this is a log message
C++中的clog提供了一个简单的日志输出工具,可以设置日志级别和日志格式,方便程序员调试和排除错误。同时clog也具有良好的线程安全性,可以在多线程环境下使用。