This Project Has Not Released Any Files
log4cppの設定ファイルを使用し、ログ出力を行うサンプルです。
testPropertyConfig.cpp
- // testConfig.cpp : Derived from testPattern.cpp.
- //
- #include <log4cpp/Portability.hh>
- #ifdef WIN32
- #include <windows.h>
- #endif
- #ifdef LOG4CPP_HAVE_UNISTD_H
- #include <unistd.h>
- #endif
- #include <cstdlib>
- #include <log4cpp/Category.hh>
- #include <log4cpp/Appender.hh>
- #include <log4cpp/OstreamAppender.hh>
- #include <log4cpp/FileAppender.hh>
- #include <log4cpp/Layout.hh>
- #include <log4cpp/BasicLayout.hh>
- #include <log4cpp/Priority.hh>
- #include <log4cpp/NDC.hh>
- #include <log4cpp/PatternLayout.hh>
- #include <log4cpp/PropertyConfigurator.hh>
- double calcPi()
- {
- double denominator = 3.0;
- double retVal = 4.0;
- long i;
- for (i = 0; i < 50000000l; i++)
- {
- retVal = retVal - (4.0 / denominator);
- denominator += 2.0;
- retVal = retVal + (4.0 /denominator);
- denominator += 2.0;
- }
- return retVal;
- }
- int main(int argc, char* argv[])
- {
- try {
- /* looking for the init file in $srcdir is a requirement of
- automake's distcheck target.
- */
- char* srcdir = std::getenv("srcdir");
- std::string initFileName;
- if (srcdir == NULL) {
- initFileName = "./testConfig.log4cpp.properties";
- }
- else {
- initFileName = std::string(srcdir) + "/testConfig.log4cpp.properties";
- }
- log4cpp::PropertyConfigurator::configure(initFileName);
- } catch(log4cpp::ConfigureFailure& f) {
- std::cout << "Configure Problem " << f.what() << std::endl;
- return -1;
- }
- log4cpp::Category& root = log4cpp::Category::getRoot();
- log4cpp::Category& sub1 =
- log4cpp::Category::getInstance(std::string("sub1"));
- log4cpp::Category& sub2 =
- log4cpp::Category::getInstance(std::string("sub1.sub2"));
- root.error("root error");
- root.warn("root warn");
- sub1.error("sub1 error");
- sub1.warn("sub1 warn");
- calcPi();
- sub2.error("sub2 error");
- sub2.warn("sub2 warn");
- root.error("root error");
- root.warn("root warn");
- sub1.error("sub1 error");
- sub1.warn("sub1 warn");
- #ifdef WIN32
- Sleep(3000);
- #else
- sleep(3);
- #endif
- sub2.error("sub2 error");
- sub2.warn("sub2 warn");
- sub2.error("%s %s %d", "test", "vform", 123);
- sub2.warnStream() << "streamed warn";
- sub2 << log4cpp::Priority::WARN << "warn2.." << "..warn3..value=" << 0
- << log4cpp::eol << "..warn4";
- log4cpp::Category::shutdown();
- return 0;
- }
testConfig.log4cpp.properties
# a simple test config log4j.rootCategory=DEBUG, rootAppender log4j.category.sub1=,A1 log4j.category.sub2=INFO log4j.category.sub1.sub2=ERROR, A2 log4j.additivity.sub1.sub2=false log4j.appender.rootAppender=org.apache.log4j.ConsoleAppender log4j.appender.rootAppender.layout=org.apache.log4j.BasicLayout log4j.appender.A1=org.apache.log4j.FileAppender log4j.appender.A1.fileName=A1.log log4j.appender.A1.layout=org.apache.log4j.SimpleLayout log4j.appender.A2=org.apache.log4j.ConsoleAppender log4j.appender.A2.layout=org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern=The message '%m' at time %d%n
testPropertyConfig.cppをビルドし、実行した結果です。実行環境はLinux(Ubuntu 11.0)です。
stdout(標準出力):
1336871833 ERROR : root error 1336871833 WARN : root warn 1336871833 ERROR sub1 : sub1 error 1336871833 WARN sub1 : sub1 warn The message 'sub2 error' at time 2012-05-13 10:17:14,894 1336871834 ERROR : root error 1336871834 WARN : root warn 1336871834 ERROR sub1 : sub1 error 1336871834 WARN sub1 : sub1 warn The message 'sub2 error' at time 2012-05-13 10:17:17,897 The message 'test vform 123' at time 2012-05-13 10:17:17,897
[PageInfo]
LastUpdate: 2012-05-13 10:18:37, ModifiedBy: daruma_kyo
[License]
GNU Free Documentation License
[Permissions]
view:all, edit:login users, delete/config:members