arm-linuxシステムにglogログを追加


一、glog紹介glogはGoogleが開発した軽量級C++ログライブラリであり、使用方法は非常に簡潔で、プログラムにも非常に軽量である.主に以下の機能をサポートする:1パラメータ設定、フラグパラメータを設定することによってログ記録行為を制御する;2重大度の等級付け、ログ重大度の等級付けによってログを記録する.3条件付きでログ情報を記録することができる.4条件中止プログラム、豊富な条件判定マクロ、プログラム終了条件をプリセットすることができる;5異常信号処理.プログラム異常の場合、異常処理プロセスをカスタマイズできます.6 debug機能をサポートし、debugモードのみに使用できる.7カスタムログ情報;8スレッドセキュリティログ記録方式;9システムレベルのログ記録;10 google perrorスタイルログ情報;11ログ文字列情報を簡略化します.
次に、作業中のプロジェクトでglogをどのように使用したかを記録します.
二、glogをコンパイルするにはまずglogファイルをダウンロードする:glog-0.3.3.tar.gzは、tar-zxvf glog-0.33を解凍する.tar.gz.ディレクトリにアクセスして、次のコマンドを実行します.
$ ./configure --host=arm-arago-linux-gnueabi

ここの–host=arm-arago-linux-gnueabiは、対応するARM上で実行されていない場合は、開発されたプラットフォームを示します.configureでいいです.makefileを生成し、makeコマンドをロードします.glogの現在のディレクトリにあります.libの下にあります.soのダイナミックライブラリlibglog.so.0 .ターゲットマシンの/usr/libディレクトリにコピーします.注意:コンパイルライブラリと実行ライブラリは異なり、実行ライブラリは/usr/libであり、glogに適用するプログラムをコンパイルする際にはコンパイルライブラリにlibglogを加える必要がある.so.0.ここでのコンパイルライブラリのパスは、/ti-sdk-am 335 x/linux-devkit/arm-arago-linux-gnueabi/usr/libです.そうでなければ、コンパイル時にこのライブラリをリンクしますが、このライブラリが見つからない場合はコンパイルできません.makefileにglogへのリンクキー:-lglogを追加する必要があります.
@$$GG -fstack-check -fbounds-check -fstack-protector-all -g -o $(application_name) $(TOPOBJS) -lm -lpthread -lxml2 -lrt -lglog

三、上記の手順を実際に運用して完成してから、プログラムで使用することができる.glogの初期化操作を見てみましょう.
void int_glog(void)
{
    char defpath[100] = {0};
    char str[256] = "mkdir ";
    //      
    int cnt = readlink("/proc/self/exe", defpath, sizeof(defpath));
    //delete the exe name
    for(int i = cnt; i >= 0; --i)
    {
        if(defpath[i] == '/')
        {
            defpath[i+1] = '\0';
            break;
        }
    }
//  log   
strcat(defpath, "usr/log");
if(access(defpath, FILE_F_OK) != 0)
{
    strcat(str,defpath);
    system(str);
    usleep(100000);
}

    //log   
    google::InitGoogleLogging("New");

    FLAGS_colorlogtostderr = true;//                
    //FLAGS_servitysinglelog = true;//         log  
    FLAGS_logbufsecs = 0;//      ,   30 ,        
    FLAGS_max_log_size = 1; //        100MB
    FLAGS_stop_logging_if_full_disk = true;//       ,      
    google::SetStderrLogging(google::GLOG_INFO); //        google::INFO           

    //         
    char Info[50] = {0};
    char Warn[50] = {0};
    char Error[50] = {0};
    char Fatal[50] = {0};

    strcpy(Info, defpath);
    strcpy(Warn, defpath);
    strcpy(Error, defpath);
    strcpy(Fatal, defpath);

    strcat(Info, "/Info_");
    strcat(Warn, "/Warning_");
    strcat(Error, "/Error_");
    strcat(Fatal, "/Fatal_");
    google::SetLogDestination(google::GLOG_INFO,Info); 
    google::SetLogDestination(google::GLOG_WARNING,Warn); 
    google::SetLogDestination(google::GLOG_ERROR,Error); 
    google::SetLogDestination(google::GLOG_FATAL,Fatal); 
    LOG(INFO) <<"------------------------------"<<endl;
    LOG(INFO) <<"---------Creat Log!!!---------
"
; LOG(INFO) <<"------------------------------"<<endl; }

初期化コードでライブラリ関数を呼び出すには、glog-0.3.3srcglogのヘッダファイルをコードエンジニアリングファイルに追加する必要があります.そうしないと、関数定義が見つかりません.この例では、プログラムを実行すると、実行プログラムが存在するフォルダの下にあるusr/logファイルにログファイルが生成されます.ログは異なるレベルで分類されます.