You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-dev@logging.apache.org by ca...@apache.org on 2006/03/04 05:51:25 UTC

svn commit: r383035 - in /logging/log4cxx/trunk: build.xml examples/console.cpp

Author: carnold
Date: Fri Mar  3 20:51:23 2006
New Revision: 383035

URL: http://svn.apache.org/viewcvs?rev=383035&view=rev
Log:
Bug LOGCXX-126: console example testing interaction of C RTL, STL and log4cxx output.

Added:
    logging/log4cxx/trunk/examples/console.cpp   (with props)
Modified:
    logging/log4cxx/trunk/build.xml

Modified: logging/log4cxx/trunk/build.xml
URL: http://svn.apache.org/viewcvs/logging/log4cxx/trunk/build.xml?rev=383035&r1=383034&r2=383035&view=diff
==============================================================================
--- logging/log4cxx/trunk/build.xml (original)
+++ logging/log4cxx/trunk/build.xml Fri Mar  3 20:51:23 2006
@@ -734,6 +734,14 @@
     </antcall>
 </target>
 
+<target name="build-console" depends="build">
+    <antcall target="build-example">
+       <param name="example.src.dir" value="${examples.dir}"/>
+       <param name="example.name" value="console"/>
+       <param name="example.includes" value="console.cpp"/>
+    </antcall>
+</target>
+
 <target name="build-stream" depends="build">
     <antcall target="build-example">
        <param name="example.src.dir" value="${examples.dir}"/>
@@ -743,7 +751,7 @@
 </target>
 
 <target name="build-examples"
-    depends="build-delayedloop, build-trivial, build-stream"
+    depends="build-delayedloop, build-trivial, build-stream, build-console"
     description="Builds example programs"/>
 
 <target name="build-simplesocketserver" depends="build">

Added: logging/log4cxx/trunk/examples/console.cpp
URL: http://svn.apache.org/viewcvs/logging/log4cxx/trunk/examples/console.cpp?rev=383035&view=auto
==============================================================================
--- logging/log4cxx/trunk/examples/console.cpp (added)
+++ logging/log4cxx/trunk/examples/console.cpp Fri Mar  3 20:51:23 2006
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdlib.h>
+#include <log4cxx/logger.h>
+#include <log4cxx/consoleappender.h>
+#include <log4cxx/simplelayout.h>
+#include <log4cxx/logmanager.h>
+#include <iostream>
+
+using namespace log4cxx;
+using namespace log4cxx::helpers;
+
+/**
+ *   Configures console appender.
+ *   @param err if true, use stderr, otherwise stdout.
+ */
+static void configure(bool err) {
+    log4cxx::ConsoleAppenderPtr appender(new log4cxx::ConsoleAppender());
+    if (err) {
+        appender->setTarget(LOG4CXX_STR("System.err"));
+    }
+    log4cxx::LayoutPtr layout(new log4cxx::SimpleLayout());
+    appender->setLayout(layout);
+    log4cxx::helpers::Pool pool;
+    appender->activateOptions(pool);
+    log4cxx::Logger::getRootLogger()->addAppender(appender);
+    LogManager::getLoggerRepository()->setConfigured(true);
+}
+
+/**
+ *   Program to test compatibility of C RTL, C++ STL and log4cxx output to standard
+ *       output and error streams.
+ *
+ *    See bug LOGCXX_126.
+ *
+ *    @author Curt Arnold
+ */
+int main(int argc, char** argv)
+{
+    if (argc <= 1) {
+        puts("Console test program\nUsage: console [-err] [ puts | putws | cout | wcout | configure | log | wide | byte ]*\n");  
+    }
+    bool configured = false;
+    bool err = false;
+    for (int i = 1; i < argc; i++) {
+        if (strcmp("-err", argv[i]) == 0) {
+            err = true;
+        } else if (strcmp("puts", argv[i]) == 0) {
+            fputs("Hello, fputs\n", err ? stderr : stdout);
+        } else if (strcmp("putws", argv[i]) == 0) {
+            fputws(L"Hello, fputws\n", err ? stderr : stdout);
+        } else if (strcmp("cout", argv[i]) == 0) {
+            if (err) {
+                std::cerr << "Hello, cout" << std::endl;
+            } else {
+                std::cout << "Hello, cout" << std::endl;
+            }
+        } else if (strcmp("wcout", argv[i]) == 0) {
+            if (err) {
+                std::wcerr << L"Hello, wcout" << std::endl;
+            } else {
+                std::wcout << L"Hello, wcout" << std::endl;
+            }
+        } else if (strcmp("configure", argv[i]) == 0) {
+            configure(err);
+            configured = true;
+        } else if (strcmp("log", argv[i]) == 0) {
+            if (!configured) {
+                configure(err);
+                configured = true;
+            }
+            log4cxx::Logger::getRootLogger()->info("Hello, log4cxx");
+        } else if (strcmp("wide", argv[i]) == 0) {
+            fwide(err ? stderr : stdout, 1);
+        } else if (strcmp("byte", argv[i]) == 0) {
+            fwide(err ? stderr : stdout, -1);
+        } else {
+            fputs("Unrecognized option: ", stderr);
+            fputs(argv[i], stderr);
+            fputs("\n", stderr);
+            fflush(stderr);
+        }
+    }
+    return 0;
+}

Propchange: logging/log4cxx/trunk/examples/console.cpp
------------------------------------------------------------------------------
    svn:executable = *