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:09Running on machine: J2RT9QDBPIXKGEOLog line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msgI1205 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 ...
随机推荐
- 立即调用的函数表达式---IIFE
有些人则称为“自执行的匿名函数” 在闭包中,我们经常需要使用到匿名函数,我感觉闭包就是一种匿名函数,子集. 但是直接在匿名函数后面调用函数是会出错的.比如: function () { alert(& ...
- [转]ASP.NET MVC 5 - 查询Details和Delete方法
在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...
- 工作流JBPM_day01:7-使用流程变量
工作流JBPM_day01:7-使用流程变量 工作流就像流水线 对应数据库中的一张表 ProcessVariableTest.Java import java.util.List; import or ...
- Unity中SendMessage和Delegate效率比较
网上直接搜的代码.需要的使用也简单,所以就不过多说明. 但是网上都说,他们之间的差距,delegate比较快,效果高.怎么个高法呢?还是自己来测试下时间. 故此, 个人之用来比较下时间差别. 一.直接 ...
- APP的缓存文件放在哪里?
只要是需要进行联网获取数据的APP,都会在本地产生缓存文件.那么,这些缓存文件到底放在什地方合适呢?系统有没有给我们提供建议的缓存位置呢?不同的缓存位置有什么不同呢? 考虑到卸载APP必须删除缓存 在 ...
- docker nginx mysql
docker run -p 9000:9000 --name myphp -v /docker/www/:/var/www/html/ -v /docker/php/php.ini:/usr/loca ...
- lua常用操作
1 .Lua生成随机数: Lua 生成随机数需要用到两个函数:math.randomseed(xx), math.random([n [, m]]) 1. math.randomseed(n) 接收一 ...
- Go基础---->go的基础学习(五)
这里是go中关于io的一些知识.有时不是你装得天衣无缝,而是我愿意陪你演得完美无缺. go中关于io的使用 一.Reader中的Read方法 Read 用数据填充指定的字节 slice,并且返回填充的 ...
- 【Java nio】 NonBlocking NIO
package com.slp.nio; import org.junit.Test; import java.io.IOException; import java.net.InetSocketAd ...
- LeetCode——Palindrome Linked List
Description: Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it ...