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 = *