2025
01
18
2008
11
17
log4cxxまとめ
APRなどをDLしましょう。もしくはこちら
log4cxxをDLしましょう。
2008/11/17時点で最新バージョンは
log4cxx0.10.0
Apache Portable Runtime 1.3.3
APR-util 1.3.4
APR iconv 1.2.1(http://apr.apache.org/download.cgiに無いのはなぜ?)
でした。これ前提で進めます。
とりあえず、ここを開きます。
環境はVS2005SP1です。C:\Apacheで作業します。
unzip apr-1.2.11-win32-src.zip rename apr-1.2.11 apr unzip apr-util-1.2.10-win32-src.zip rename apr-util-1.2.10 apr-util cd apache-log4cxx-0.10.0 configure configure-aprutil で、configure.batとconfigure-aprutil.batを実行します。 configure.batはlog4cxx.hwとprivate/log4cxx_private.hwを、log4cxx.hとprivate/log4cxx_private.hにコピーします。 configure-aprutil.batは、sedコマンドを用いてapu.hwとapr_ldap.hwを編集し、APR-IconvとLDAPを無効にします。 sedコマンドがなければ、textエディタで編集してくれとのこと。sedはcygwinなどが入っていれば、OK。 projects/log4cxx.dswを開きます。 プロジェクトの変換はVS任せです。 log4cxxをビルドします。 テストのために次の環境変数を定義します。TOTO=wonderful, key1=value1, key2=value2 projects/testsuite.dswを開きます。 プロジェクトの設定で、作業ディレクトリに"../src/test/resources"を設定します。 実行します。。。正直何をしているのかわかりません。OKです。 Releaseビルドでも同じ結果ならOKです。 自分のプロジェクトにlog4cxxを追加します。 projects/testsuite.dswの設定を参考にしながら まず、プリプロセッサの定義に下記が必要なようです。 APR_DECLARE_STATIC APU_DECLARE_STATIC ランタイムライブラリをマルチスレッド DLL (/MD)とします。 以下のlibをリンクします。 ADVAPI32.LIB WS2_32.LIB MSWSOCK.LIB SHELL32.LIB ODBC32.LIB .\release\log4cxx.lib ..\..\apr-util\libr\aprutil-1.lib ..\..\apr-util\xml\expat\lib\libr\xml.lib ..\..\apr\libr\apr-1.lib では、適当にアプリを作成します。 #include "log4cxx/logger.h" #include "log4cxx/propertyconfigurator.h" using namespace log4cxx; int _tmain(int argc, _TCHAR* argv[]) { LoggerPtr logger = Logger::getLogger("test"); PropertyConfigurator::configure("log4j.properties"); LOG4CXX_DEBUG(logger, "test"); return 0; } こんな感じのコンソールアプリを作ります。 でデバッグビルドで実行します。log4j.propertiesで設定のとおり、ログが出力されます。 で、リリースビルドで実行します。バッファオーバーランエラーが発生します。 結局、log4cxx.dllではこの問題を解決できませんでした。 解決策として、log4cxxをスタティックライブラリとしてビルドします。 log4cxxのプロジェクトを開き、構成の種類をスタティック ライブラリにします。 プリプロセッサの定義にLOG4CXX_STATICを追加し、DLLの定義を削除します。 ビルドします。 リリースビルドでもバッファオーバーランエラーが発生しません。
PR
2008/11/17 (Mon.) Trackback() Comment(0) C++
Comments
Trackback
Trackback for this entry: