glog安装与使用
载后解压,利用Visual Studio打开google-glog.sln。生成解决方案
打开sln会有几个项目,libglog是动态库,生成dll,libglog_static是静态库,生成lib。
安装:
方法一:将libglog.dll和libglog.lib文件,拷贝文件到你的工程文件夹下,并拷贝src\windows\下的glog目录到你的工程文件下。
方法二:你也可以将这两个文件拷贝到系统文件夹下,实现全局访问。
1. 将libglog.dll拷贝到C:\Program Files\Microsoft Visual Studio 11.0\VC\bin
2. 将libglog.lib拷贝到C:\Program Files\Microsoft Visual Studio 11.0\VC\lib
3. 将src\windows\下的glog目录拷贝到C:\Program Files\Microsoft Visual Studio 11.0\VC\include
#include "glog/logging.h"
#include <iostream>
#include <vector>
using namespace std;
#pragma comment(lib,"libglog.lib") int main(int argc, char* argv[])
{
// Initialize Google's logging library.
google::InitGoogleLogging(argv[]);
google::SetLogDestination(google::INFO,"E://");
// 设置日志路径 INFO WARNING ERROR FATAL
// ...
char str[] = "hello log!";
LOG(INFO) << "Found " << google::COUNTER <<endl;
LOG(INFO) << str ;//<< " cookies";
LOG(WARNING) << "warning test"; // 会输出一个Warning日志
LOG(ERROR) << "error test";//会输出一个Error日志 system("pause");
return ;
}
1> glogTest.cpp
1> 正在生成代码...
1>glogTest.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) void __cdecl google::InitGoogleLogging(char const *)" (__imp_?InitGoogleLogging@google@@YAXPBD@Z),该符号在函数 _main 中被引用
1>glogTest.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall google::LogMessage::LogMessage(char const *,int)" (__imp_??0LogMessage@google@@QAE@PBDH@Z),该符号在函数 _main 中被引用
1>glogTest.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall google::LogMessage::LogMessage(char const *,
库目录和lib目录以及libglog_static.lib都配置了,按照道理来说不可能出现无法解析的外部符号。
我看一篇文章说的是字符集的问题:
error LNK2019: 无法解析的外部符号 "__declspec(dllimport)
我在VS2005下写C++的程序,采用一个工程生成DLL文件给另一个工程执行,但每次执行时都出现 error LNK2019: 无法解析的外部符号 "__declspec(dllimport)错误。检查了好几遍代码都觉得没有问题。
最后发现是字符集出现问题。生成DLL文件的字符集是Unicode而生成exe文件的字符集为默认的ASCII。
只要统一字符集即可解决问题:
VS2005的c++项目默认字符集是使用 Unicode 字符集,在项目属性->配置属性-->常规->项目默认值->字符集中设置字符集即可。
补充VC6.0是默认采用ASCII字符集的。
我把glog改成了unicode字符集还是不行。
XPsp3 vs2005 glog-0.3.3 http://download.csdn.net/detail/chenguangxing3/6661667
glog-0.3.3里面有vs2008的sln,vs2005可以直接修改sln和vcproj降版本.打开sln直接编译就行了,没悬念.编译后生成: libglog.dll libglog.lib libglog_static.lib. 头文件在src\windows\glog
使用:
文件包含和宏定义:#define GOOGLE_GLOG_DLL_DECL // 使用静态glog库用这个
#define GLOG_NO_ABBREVIATED_SEVERITIES // 没这个编译会出错,传说因为和Windows.h冲突
#include "glog/logging.h"
#pragma comment(lib,"glog/libglog_static.lib")
设置参数,输出日志:
FLAGS_log_dir =
"c:\\GLogFiles"
;
// 设置日志文件保存目录,这个目录必须是已经存在的,否则不能生成日志文件.
// GLog生成的文件名格式是[文件名].[计算机名].[Windows用户名].[log].[等级].[年月日时分秒].[PID]例如:abc.exe.J2RT9QDBPIXKGEO.Administrator.log.INFO.20131205-112354.3108
// 每个进程中至少要执行1次InitGoogleLogging(),否则不产生日志文件.例如:只在xxApp::InitInstance()中调用一次InitGoogleLogging(),xxDlg中不必调用也会把日志输出到指定文件.
google::InitGoogleLogging(
"abc.exe"
);
// 设置日志文件名中的"文件名"字段.
LOG(INFO) <<
"我在InitInstance()"
;
// 记录一个INFO等级的日志"我在InitInstance()"
google::ShutdownGoogleLogging();
// 停止GLog,与InitGoogleLogging()成对使用.没有这句vs2005会有内存泄漏,但是网上好多例子都没有用这句
/*
上面代码生成了名为"abc.exe.J2RT9QDBPIXKGEO.Administrator.log.INFO.20131205-134009.4068"的日志,内容是:
Log file created at: 2013/12/05 13:40:09
Running on machine: J2RT9QDBPIXKGEO
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
I1205 13:40:09.375000 2460 abc.cpp:75] 我在InitInstance()
*/
问题:
GLog好像不支持Unicode
标志参数 | 类型 | 作用 |
logtostderr |
bool | 值为true的时候,日志信息输出到stderr,并非文件。默认值为 false。 |
stderrthreshold |
int |
严重性级别在该门限值以上的日志信息除了写入日志文件以外,还要输出到stderr。各严重性级别对应的数值:INFO—0,WARNING—1,ERROR—2,FATAL—3
默认值为2.
|
minloglevel |
int |
严重性级别在该门限值以上的日志信息才进行记录。
默认值为0.
|
log_dir |
string |
日志信息记录路径。默认为空,如果没有指定信息输出到stderr,则信息保存在"/tmp/<program name>.<hostname>.<user name>.log.<severity level>.<date>.<time>.<pid>"文件中。 (e.g., "/tmp/hello_world.example.com.hamaji.log.INFO.20080709-222411.10474"). |
v |
int | 对于使用“ VLOG(m) ”(m为int型)表达式进行输出的日志信息,只在m的值小于该标志的值的时候,才进行输出。另外, 该设置可能被 vmodule标志给覆盖.默认为0. |
vmodule |
string |
分模块(文件)设置 |
INFO
,WARNING
, ERROR
, 和 FATAL
四级。使用者可以在命令行中设置严重性等级门限值来控制日志的输出,详细见“参数设置”部分的“minloglevel
”标志值的介绍。1, LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";
上面的语句表示,只有当num_cookies > 10条件成立时,“Got lots of cookies”日志信息才被记录。
2, LOG_EVERY_N(INFO, 10) << "Got the " << COUNTER << "th cookie";
3, LOG_IF_EVERY_N(INFO, (size > 1024), 10) << "Got the " << COUNTER<<
"th big cookie";
4, LOG_FIRST_N(INFO, 20) << "Got the " << COUNTER << "th cookie";
上面的语句表示,当该语句只在首次执行了20次以后记录日志信息, COUNTER变量表示该语句被执行的次数。
1,判定大小关系
CHECK_EQ, CHECK_NE, CHECK_LE, CHECK_LT, CHECK_GE, CHECK_GT,使用这些宏需要注意类型一致,如果出现类型不一致的,可使用static_cast转换。
2,判定指针是否为空
3,判定字符串是否相等
CHECK_STREQ
, CHECK_STRNE
, CHECK_STRCASEEQ
, CHECK_STRCASENE
。可进行大小写敏感或不敏感字符串来分别判定。
4,
判定浮点是否相等或相近
CHECK_DOUBLE_EQ
,CHECK_NEAR。这两个宏都需要指定一个可容忍的偏差上限。
*** SIGSEGV (@0x0) received by PID 17711 (TID 0x7f893090a6f0) from PID 0; stack trace: ***
PC: @ 0x412eb1 TestWaitingLogSink::send()
@ 0x7f89304f7f06 google::LogMessage::SendToLog()
@ 0x7f89304f3739 google::LogMessage::~LogMessage()
@ 0x4046f9 (unknown)
DLOG(INFO) << "Found cookies";
DLOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";
DLOG_EVERY_N(INFO, 10) << "Got the " << COUNTER << "th cookie";
PCHECK(write(1, NULL, 2) >= 0) << "Write NULL failed";
F0825 185142 test.cc:22] Check failed: write(1, NULL, 2) >= 0 Write NULL failed: Bad address [14]
glog安装与使用的更多相关文章
- ubutun16.04 安装编译glog日志库
glog 是一个 C++ 日志库,它提供 C++ 流式风格的 API.在安装 glog 之前需要先安装 gflags,这样 glog 就可以使用 gflags 去解析命令行参数(可以参见gflags ...
- Glog
Glog的简单入门,glog虽然在配置参数方面比较麻烦,但是在小规模程序中,由于其简单灵活,也许会有优势. 0, glog 是google的开源日志系统,相比较log4系列的日志系统,它更加轻巧灵活 ...
- centos7.2下caffe的安装及编译
1.前期准备 安装依赖 sudo yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5 ...
- CentOS6.9下安装 Pika 2.2.5(新增了拷贝安装版本的办法+对于PID的位置及数据库位置的理解)
一.环境准备 yum install -y snappy-devel protobuf-compiler protobuf-devel bzip2-devel zlib-devel bzip2 ...
- solus 系统 - 编译安裝 ibus-rime 中文输入法(附:小鹤双拼双形配置文件)
編譯方法參見官網 - https://github.com/rime/home/wiki/RimeWithIBus 安装依赖:列出几个可能用到的命令 #安裝cmake gcc等开发工具 sudo eo ...
- window环境下glog的安装
window环境下glog的安装 分类: c++2014-09-23 14:12 32人阅读 评论(0) 收藏 举报 下载后解压,利用Visual Studio打开google-glog.sln.生成 ...
- ubuntu 14.04 安装 glog
1.下载 git clone https://github.com/google/glog 2.配置 sudo apt-get install autoconf automake libtool 3. ...
- Ubuntu14.04下安装glog
下载原始代码编译 1. Clone Source Code glog git clone https://github.com/google/glog 2. Install dependencies ...
- c++ google glog模块安装和基本使用(ubuntu)环境
1,如何安装 1 Git clone https://github.com/google/glog.git 2 cd glog 3 ./autogen.sh 4 ./configure --prefi ...
随机推荐
- 【jersey】 spring 整合jersey 实现RESTful webservice
Jersey是一个RESTFUL请求服务JAVA框架,与常规的JAVA编程使用的struts框架类似,它主要用于处理业务逻辑层.与Struts类似,它同样可以和hibernate,sprin ...
- shell基础篇(十)shell脚本的包含
前记 写到这里:shell中基础差不多已经讲完了.希望你已经对shell有了一个基本了解.你可能跃跃欲试,要写一些程序练习一下.这会对你很有好处.建议大家去chinaunix去学习:我是li0924. ...
- Linux mii-tool 命令
mii-tool 用来查看或设置网卡的相关参数,该命令已经过时了,推荐使用 ethtool 命令 [root@localhost ~]$ mii-tool -v eth1 # 查看网卡的相关信息,包括 ...
- 《C++ Primer Plus》15.1 友元 学习笔记
15.1.1 友元类假定需要编写一个模拟电视机和遥控器的简单程序.决定定义一个Tv类和一个Remote类,来分别表示电视机和遥控器.遥控器和电视机之间既不是is-a关系也不是has-a关系.事实上,遥 ...
- PyQt4信号与槽
事件 事件(Events)是GUI程序中很重要的一部分.它由用户或系统产生.当我们调用程序的exec_()方法时,程序就会进入主循环中.主循环捕获事件并将它们发送给相应的对象进行处理.奇趣公司(Tro ...
- iOS设计模式之类族(class cluster)
类族模式在UIKit(user interface framework)使用的范围已经远远超过我们的想象,比如,UIButton,NSArray,NSString,NSNumber等, 例如NSNum ...
- ubuntu 备忘
卷组扩容 Linux mint采用默认卷组的安装方式 sain@Linux ~ $ df -hl Filesystem Size Used Avail Use% Mounted on udev .7G ...
- 【python系列】SyntaxError:Missing parentheses in call to 'print'
打印python2和python3的区别 如上图所示,我的 PyCharm安装的是python3.6如果使用print 10会出现语法错误,这是python2.x和python3.x的区别所导致的.
- Git学习笔记(SourceTree克隆、提交、推送、拉取等)
学习一下sourcetree使用git 目录 一 克隆Clone 二 提交Commit和推送Push 三 拉取pull和获取fetch 四 版本回退reset 五 检出checkout 六 标签Tag ...
- Nginx降权启动
给Nginx服务降权,用lol用户跑Nginx,给开发及运维设置普通账号,只要和lol同组即可管理Nginx,该方案解决了Nginx管理问题,防止root分配权限过大. 开发人员使用普 ...