1. 程式人生 > >google-glog 學習

google-glog 學習

用途:

glog 是 google 的一個 c++ 開源日誌系統,輕巧靈活,入門簡單,而且功能也比較完善。

用法:

一、glog基本使用

  • 初始化函式:google::InitGoogleLogging(argv[0])

  • 初始化引數一般是第一個命令列引數--即程式的名稱
#include <iostream>
using namespace std;

#include <glog/logging.h> //標頭檔案
#pragma comment(lib, "libglog.lib")

int main(int argc, char **argv)
{
    google::InitGoogleLogging("KLH");
    google::SetLogDestination(google::INFO, "F://");            //日誌輸出級別,輸出目錄

    char str[20] = "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 0;
}

2) 編譯生成的exe檔案還不能直接執行,需要將第3步編譯的dll檔案拷貝到相同目錄中才能執行。測試的日誌檔案自動生成在F:/根目錄中。類似於如下格式內容:

1 Log file created at: 2015/12/14 20:28:18
2 Running on machine: VICTO-PC
3 Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
4 I1214 20:28:18.590252  9648 main2.cpp:13] Found 0
5 I1214 20:28:18.591253  9648 main2.cpp:14] hello log!
6 W1214 20:28:18.591253  9648 main2.cpp:15] warning test
7
E1214 20:28:18.592252 9648 main2.cpp:16] error test 

eg2:

int main(int argc,char* argv[])
{
    google::InitGoogleLogging(argv[0]);  // 初始化 glog
    google::ParseCommandLineFlags(&argc, &argv, true);  // 初始化 gflags
    LOG(INFO) << "Hello, GOOGLE!";  // INFO 級別的日誌
    LOG(ERROR) << "ERROR, GOOGLE!"
; // ERROR 級別的日誌 return 0; }

二、使用glog嚴重錯誤DUMP功能

使用google::InstallFailureSignalHandler(); 和 google::InstallFailureWriter(&FatalMessageDump); 可以在程式出現嚴重錯誤時將詳細的錯誤資訊打印出來,但是使用預設編譯的glog將會出現找不到此函式定義的問題,類似於:

error LNK2019: 無法解析的外部符號 "__declspec(dllimport) void __cdecl google::InstallFailureWriter(void (__cdecl*)(char const *,int))" ([email protected]@@[email protected]@Z),該符號在函式 "public: void __thiscall EnvironmentManager::Initialize(int,char * *,int)" ([email protected]@@[email protected]) 中被引用
error LNK2019: 無法解析的外部符號 "__declspec(dllimport) void __cdecl google::InstallFailureSignalHandler(void)" ([email protected]@@YAXXZ),該符號在函式 "public: void __thiscall EnvironmentManager::Initialize(int,char * *,int)" ([email protected]@@[email protected]) 中被引用

  這個時候只需要在預設的glog工程中,將signalhandler.cc 納入到libglog工程中,重新編譯即可。重新初始化glog的方法如下:

複製程式碼
 1 // Start google log system:
 2 google::InitGoogleLogging(argv[0]);
 3 google::SetLogDestination(google::GLOG_INFO, ".//");
 4 google::SetStderrLogging(google::GLOG_INFO);
 5 google::SetLogFilenameExtension("log_");
 6 google::InstallFailureSignalHandler();
 7 google::InstallFailureWriter(&FatalMessageDump);
 8 FLAGS_colorlogtostderr = true;        // Set log color
 9 FLAGS_logbufsecs = 0;                // Set log output speed(s)
10 FLAGS_max_log_size = 1024;            // Set max log file size(GB)
11 FLAGS_stop_logging_if_full_disk = true;    // If disk is full
複製程式碼

參考文獻:

相關推薦

google-glog 學習

用途:glog 是 google 的一個 c++ 開源日誌系統,輕巧靈活,入門簡單,而且功能也比較完善。用法:一、glog基本使用初始化函式:google::InitGoogleLogging(argv[0])初始化引數一般是第一個命令列引數--即程式的名稱#include

google glog 使用方法

comm example command ini 打印 div fat argv pro #include <glog/logging.h> int main(int argc,char* argv[]) { google::ParseC

TensorFlow筆記(7)-----實戰Google深度學習框架----隊列與多線程

一起 width nbsp stop 之前 圖片 第一個 queue enqueue 一、創建一個隊列: FIFOQueue:先進先出 RandomShuffleQueue:會將隊列中的元素打亂,每次出列操作得到的是從當前隊列所有元素中隨機選擇的一個。 二、操作一個隊列的函

《Tensorflow 實戰Google深度學習框架》PDF版

roc mage com size 深度學習框架 pdf 深度學習 ext flow 鏈接:https://pan.baidu.com/s/1Jf8LWJXWUnfpNly0KagVMA《Tensorflow 實戰Google深度學習框架》PDF版

《TensorFlow實戰Google深度學習框架 (第2版) 》中文版PDF和源代碼

分享 flow shadow 源代碼 ges ado text href 第2版 下載:https://pan.baidu.com/s/1aD1Y2erdtppgAbk8c63xEw 更多最新的資料:http://blog.51cto.com/3215120 《Tensor

google glog 簡單使用小結

glog 是 google 的一個 c++ 開源日誌系統,輕巧靈活,入門簡單,而且功能也比較完善。 安裝 以下是官方的安裝方法,一句命令: ➜ code git clone https://github.com/google/glog.git ➜ code cd glog

TensorFlow-實戰Google深度學習框架 筆記(上)

當我 日誌 不一定 rain 如何 validate .config 存儲 構建 TensorFlow TensorFlow 是一種采用數據流圖(data flow graphs),用於數值計算的開源軟件庫。在 Tensorflow 中,所有不同的變量和運算都是儲存在計算圖

分享《TensorFlow實戰Google深度學習框架 (第2版) 》中文版PDF和源代碼

技術分享 roc orf 中文版 RoCE term col vpd pan 下載:(https://pan.baidu.com/s/1mrEiGC2B3h6p1iOZuOkGlw) 《TensorFlow實戰Google深度學習框架(第2版)》中文版PDF和源代碼中文版P

Tensorflow 實戰Google深度學習框架 第五章 5.2.1Minister數字識別 原始碼

1 import os 2 import tab 3 import tensorflow as tf 4 5 print "tensorflow 5.2 " 6 7 from tensorflow.examples.tutorials.mnist import input

Tensorflow 實戰Google深度學習框架 第五章 5.2.1Minister數字識別 源代碼

sting var initial testin def after depend reduce sky 1 import os 2 import tab 3 import tensorflow as tf 4 5 print "tensorflow

《TensorFlow:實戰Google深度學習框架》--5.2.1 MNIST手寫識別問題(程式已改進)

目錄 MNIST資料集介紹: TensorFlow完整訓練MNIST資料集(程式已改進): 本篇部落格涉及很多本書第4章的知識:啟用函式、指數衰減的學習率設定、正則化、滑動平均等知識。如有疑問請參考本部落格關於第4章記錄介紹。 MNIST資料集介紹: MNIST資料集是N

《TensorFlow實戰Google深度學習框架(第2版)》+《TensorFlow實戰_黃文堅》

代碼 tex ref 深度學習框架 term 第2版 ogl type google 資源鏈接:https://pan.baidu.com/s/1n-ydbsnvKag4jWgpHRGIUA《TensorFlow實戰Google深度學習框架(第2版)》中文版PDF和源代碼帶

《TensorFlow:實戰Google深度學習框架》——6.3 卷積神經網路常用結構

1、卷積層 圖6-8顯示了卷積層神經網路結構中重要的部分:濾波器(filter)或者核心(kernel)。 過濾器可以將當前層神經網路上的一個子節點矩陣轉化為下一層神經網路上的一個單位節點矩陣 。 單位節點矩陣指的是一個長和寬都為1,但深度不限的節點矩陣 。 在一個卷積層巾,過濾器

《TensorFlow:實戰Google深度學習框架》——6.2 卷積神經網路簡介(卷積神經網路的基本網路結構及其與全連線神經網路的差異)

下圖為全連線神經網路與卷積神經網路的結構對比圖: 由上圖來分析兩者的差異:                  全連線神經網路與卷積網路相同點   &nb

《TensorFlow:實戰Google深度學習框架》——6.1 影象識別中經典資料集介紹

1、CIFAR資料集 CIFAR是一個影響力很大的影象分類資料集,CIFAR資料集中的圖片為32*32的彩色圖片,由Alex  Krizhevsky教授、Vinod Nair博士和Geoffrey Hinton教授整理的。 CIFAR是影象詞典專案(Visual Dictionar

王權富貴書評:《TensorFlow實戰Google深度學習框架第二版》(鄭澤宇 樑博文 顧思宇 著)

一本介紹TensorFlow的書,比較基礎,但是還是寫的不好。這本是我TensorFlow的啟蒙書,我硬著頭皮看完的,目前還沒發現比這本書好的。 推薦指數:**                   

《TensorFlow:實戰Google深度學習框架》——6.3 卷積神經網路常用結構(池化層)

池化層在兩個卷積層之間,可以有效的縮小矩陣的尺寸(也可以減小矩陣深度,但實踐中一般不會這樣使用),co。池從而減少最後全連線層中的引數。 池化層既可以加快計算速度也可以防止過度擬合問題的作用。 池化層也是通過一個類似過濾器結構完成的,計算方式有兩種: 最大池化層:採用最

google protocol學習總結

安裝protocol  sudo apt-get install libprotobuf-dev protobuf-compiler ubuntu16.04 因為之前安裝過ros 所以系統中有預設的 protobuf ,至於使用哪個版本的protocol,可以自己設定,參考

tensorflow:實戰google深度學習框架

第一章 1.  簡介 第二章 1.  安裝 安裝方法在我的部落格有,包括cpu版,gpu版。   第三章 TensorFlow入門 1.  計算圖 constant是TensorFlow的常量節點,通過constant方法建立,

TensorFlow+實戰Google深度學習框架學習筆記(12)------Mnist識別和卷積神經網路LeNet

一、卷積神經網路的簡述 卷積神經網路將一個影象變窄變長。原本【長和寬較大,高較小】變成【長和寬較小,高增加】 卷積過程需要用到卷積核【二維的滑動視窗】【過濾器】,每個卷積核由n*m(長*寬)個小格組成,每個小格都有自己的權重值, 長寬變窄:過濾器的長寬決定的 高度變高:過濾器的個數決定的 &nb