log4cppでログを取る
「メモなんかいいからログ取れよ!!!」と先輩社員に怒られました(ウソです)
ログのおかげで彼女ができました(ウソです)
きちんとログを取ることでデバッグがやりやすくなりました(当然です)
C++でPostgreSQLに接続するサンプルに、ログを吐かせる。ただそれだけ。
foobarmain.cpp
#include <iostream> #include <unistd.h> #include "foobar.h" int main() { FooBar *foobar= new FooBar(); bool logConf = foobar->InitLog4cpp(); if ( !logConf ) { return -1; } foobar->ProcessMain(); if ( foobar != NULL ){ delete foobar; foo = NULL; } }
fobar.h
#ifndef FOOBAR_H_ #define FOOBAR_H_ #include <iostream> #include <stdio.h> #include <unistd.h> #include <errno.h> #include <string> #include <cstdlib> #include <fstream> #include <sstream> #include "libpq-fe.h" #include <log4cpp/Category.hh> #include <log4cpp/PropertyConfigurator.hh> #define LOGCONF "/home/tydk27/foobar/conf/foobar_log.conf" class FooBar { public: FooBar(); bool ProcessMain(); bool InitLog4cpp(); private: std::string DbHost; int DbPort; std::string DbName; std::string DbUser; std::string DbPass; }; #endif /* FOOBAR_H_ */
fobar.cpp
#include "foobar.h" using namespace std; FooBar::FooBar() { DbHost = "localhost"; DbPort = 5432; DbName = "sample"; DbUser = "hoge"; DbPass = "hogehoge"; } bool FooBar::ProcessMain() { log4cpp::Category& logger = log4cpp::Category::getInstance("ProcessMain"); logger.info("Process Start"); try { string connstr = "host=" + DbHost + " port=" + DbPort + " dbname=" + DbName + " user=" + DbUser + " password=" + DbPass; PGconn* conn; conn = PQconnectdb( connstr.c_str() ); if ( PQstatus( conn ) != CONNECTION_OK ) { logger.error("Connection Failed"); exit( EXIT_FAILURE ); } } catch ( exception& e ) { logger.fatal("Fatal Error"); return false; } logger.info("Process End"); return true; }
foobar_log.conf
log4cpp.rootCategory=DEBUG, rootAppender log4cpp.appender.rootAppender=RollingFileAppender log4cpp.appender.rootAppender.fileName=/home/tydk27/foobar/log/foobar.log log4cpp.appender.rootAppender.maxFileSize=1024KB log4cpp.appender.rootAppender.maxBackupIndex=5 log4cpp.appender.rootAppender.layout=PatternLayout log4cpp.appender.rootAppender.layout.ConversionPattern=%d [%t] %-6p %c - %m%n