2007年07月26日
Log4cxx続き
昨日のAssertionで失敗していたところのコードを見てみたらsedを起動しようとして失敗していたようだ。
と言う事でcygwinをPATHに追加したら成功。ただ、別の箇所でも3箇所ほどテストに失敗していた。
とりあえずbuildしてdllを作成して、includeファイル設定して#pragma comment(lib, "log4cxxd.lib")とかしてDLLを追加したら無事ロギングできるようになった。
ただ、VC++のプロジェクトのプロパティで、「構成プロパティ」-「C/C++」-「ランタイムライブラリ」を「マルチスレッド デバッグ DLL (/MDd)」にしなければコンパイルでエラーになった。
1>libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __malloc_dbg が関数 "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。
1>libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __free_dbg が関数 "void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。
1>libcpmtd.lib(stdthrow.obj) : error LNK2019: 未解決の外部シンボル __CrtDbgReportW が関数 "void __cdecl std::_Debug_message(wchar_t const *,wchar_t const *,unsigned int)" (?_Debug_message@std@@YAXPB_W0I@Z) で参照されました。
な感じのエラー。
イマイチVC++がわかっていないのでこのオプションの変更で具体的にどういう変化がありこのエラーが出ているのかはわからない。
とりあえず俺の愛するログ出力ができるようになったので、C++での開発も楽になるだろう。
Javaと違い、ソースコード上の何行目で吐いたログか表示できないようだ・・・と思ったらできた。
logger->info("てすと");
などのようにするとどのファイルの何行目かと言うのは記録されないが、
LOG4CXX_INFO(logger, "Entering application.");
のように書くとどのファイルの何行目かが記録される。
たとえば以下のように出る。
2007-07-26 00:51:48,621 INFO Client(c:\users\長いので省略\test.cpp:40) - Entering application.
見たいな感じで。
Javaだとファイル名だけ出るけどC++版はフルパスで出るんだな。おしり20文字分とかしないと長くなる。
うむ。なんだかモチベーションがあがってきたぞ!
Trackback on "Log4cxx続き"
このエントリーのトラックバックURL:
"Log4cxx続き"へのトラックバックはまだありません。
"Log4cxx続き"へのコメントはまだありません。