//日志级别
enum SeverityLevel
{google::INFO = 0,
google::WARNING = 1,
google::ERROR = 2,
google::FATAL = 3,
};
//对应级别的日志打印在对应级别的日志文件中。并且高级别的日志同时打印在本级别和低级别中。例如INFO中会有ERROR级别的输出。
//日志类型
LOG //内置日志
VLOG //自定义日志
DLOG //DEBUG模式可输出的日志
DVLOG //DEBUG模式可输出的自定义日志
SYSLOG //系统日志,同时通过 syslog() 函数写入到 /var/log/message 文件
PLOG //perror风格日志,设置errno状态并输出到日志中
RAW_LOG //线程安全的日志,需要#include <glog/raw_logging.h>
#include <glog/logging.h>
void SingHandler(const char *data, int size)
{
FILE * file = fopen("./dump.log","ab");
fwrite(data,1,size,file);
fclose(file);
LOG(ERROR) << data;
}
void fun()
{
char *c = NULL;
printf("%c\n", *c);
}
int main(int argc,char**argv)
{
google::InitGoogleLogging(argv[0]);//传入的程序名字作为日志文件的名字前缀
FLAGS_log_dir = "./log";//指定的log存储路径必须是程序运行前存在的;FLAGS_log_dir是gflags式变量
// google::SetLogDestination(google::INFO,"./log/log_info_");
// google::SetLogDestination(ERROR,"./log/log_error_");
FLAGS_colorlogtostderr=true;
LOG(INFO) << "Hello, glog!";
LOG(WARNING) << "WARNING";
LOG(ERROR) << "error";
google::InstallFailureSignalHandler();//可以记录程序core dump的信息(引起的函数)
google::InstallFailureWriter(&SingHandler);//安装core dump处理的函数
fun();
google::ShutdownGoogleLogging();//和InitGoogleLogging()成对出现的,如果没有这个会出现内存泄漏
return 0;
}