[セットトップ]C++オープンソースログライブラリ--Glogの使用
3709 ワード
会社の他の同僚の多くはC#をして、社内はしばらく自分のC++ログライブラリを提供する必要はありません.プロジェクトが緊急なので、オープンソースのログライブラリを選んで使用するつもりです.以前javaをしたことがあるので、ログ4 jは強いですが、調べてみると、その使用は少し複雑です.だから最も偉大な会社googleを思い出して、そのGlogの使用はやはり比較的に簡単で、ソースコードの下で直接VSコンパイルでlibとdllライブラリを生成して、ソースコードのファイルの中ですべて既成のvs工事があります.
オープンソースプロジェクトのトップページ:https://code.google.com/p/google-glog/
Glogプロジェクトパス:https://code.google.com/p/google-glog/downloads/list
最初のステップはglog-0.3をダウンロードします.3.tar.gz、解凍してgoogle-glogを直接開きます.slnエンジニアリングファイルvsバージョンが間違っている場合は自動変換
第2歩、コンパイルして、Debugの下でlibglogを生成します.dll、 libglog.lib、libglog_static.lib
第3歩、ヘッダファイルとlibライブラリを自分の工事の下にコピーして、私はしばらくwindowの下で使うため、ヘッダファイルはglog-0.3を使います.3\src\windows\glog
ステップ4では、自分のプロジェクトの下に引用し、コンパイルしてエラーを発見します.
log_へseverity.hヘッダファイルを表示すると、マクロ定義の場所で競合が発生します.
解決方法:
エンジニアリングにプリコンパイルマクロGLOG_を付けるNO_ABBREVIATED_SEVERITIES
C/C+-->プリプロセッサ-->プリプロセッサ定義-->GLOG_を付けるNO_ABBREVIATED_SEVERITIESマクロ保存、コンパイル通過~
ステップ5、自分のプロジェクトで使用
はい、後でこれらのログを工事で使用します.
オープンソースプロジェクトのトップページ:https://code.google.com/p/google-glog/
Glogプロジェクトパス:https://code.google.com/p/google-glog/downloads/list
最初のステップはglog-0.3をダウンロードします.3.tar.gz、解凍してgoogle-glogを直接開きます.slnエンジニアリングファイルvsバージョンが間違っている場合は自動変換
第2歩、コンパイルして、Debugの下でlibglogを生成します.dll、 libglog.lib、libglog_static.lib
第3歩、ヘッダファイルとlibライブラリを自分の工事の下にコピーして、私はしばらくwindowの下で使うため、ヘッダファイルはglog-0.3を使います.3\src\windows\glog
ステップ4では、自分のプロジェクトの下に引用し、コンパイルしてエラーを発見します.
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error : ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1> SessionMgr.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error : ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1> SessionFactory.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error : ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1> RealTimeStreamSession.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error : ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1> main.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error : ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1> GNumGenerator.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error : ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1> DevicControlSession.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error : ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1> CatalogSesssion.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error : ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
log_へseverity.hヘッダファイルを表示すると、マクロ定義の場所で競合が発生します.
#ifndef GLOG_NO_ABBREVIATED_SEVERITIES
# ifdef ERROR
# error ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
# endif
const int INFO = GLOG_INFO, WARNING = GLOG_WARNING,
ERROR = GLOG_ERROR, FATAL = GLOG_FATAL;
#endif
解決方法:
エンジニアリングにプリコンパイルマクロGLOG_を付けるNO_ABBREVIATED_SEVERITIES
C/C+-->プリプロセッサ-->プリプロセッサ定義-->GLOG_を付けるNO_ABBREVIATED_SEVERITIESマクロ保存、コンパイル通過~
ステップ5、自分のプロジェクトで使用
#include "glog/logging.h"
int _tmain(int argc, _TCHAR* argv[])
{
google::InitGoogleLogging((const char *)argv[0]); //
google::SetLogDestination(google::GLOG_INFO,"./myInfo");
LOG(INFO) << "This is a <Warn> log message..." << ;
.....................
}
はい、後でこれらのログを工事で使用します.