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 2005/02/22 18:59:50 UTC

cvs commit: logging-log4cxx/src syslogappender.cpp

carnold     2005/02/22 09:59:50

  Modified:    include/log4cxx portability.h
               src      syslogappender.cpp
  Log:
  LOGCXX-66: SyslogAppender unstubbed, syslog() assumed on Unix
  
  Revision  Changes    Path
  1.11      +4 -0      logging-log4cxx/include/log4cxx/portability.h
  
  Index: portability.h
  ===================================================================
  RCS file: /home/cvs/logging-log4cxx/include/log4cxx/portability.h,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- portability.h	15 Feb 2005 23:48:06 -0000	1.10
  +++ portability.h	22 Feb 2005 17:59:50 -0000	1.11
  @@ -60,4 +60,8 @@
   #define LOG4CXX_HAVE_XML 1
   #endif
   
  +#if !defined(_WIN32)
  +#define LOG4CXX_HAVE_SYSLOG 1
  +#endif
  +
   #endif //_LOG4CXX_PORTABILITY_H
  
  
  
  1.14      +15 -19    logging-log4cxx/src/syslogappender.cpp
  
  Index: syslogappender.cpp
  ===================================================================
  RCS file: /home/cvs/logging-log4cxx/src/syslogappender.cpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- syslogappender.cpp	15 Feb 2005 23:56:01 -0000	1.13
  +++ syslogappender.cpp	22 Feb 2005 17:59:50 -0000	1.14
  @@ -1,5 +1,5 @@
   /*
  - * Copyright 2003,2004 The Apache Software Foundation.
  + * Copyright 2003,2005 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.
  @@ -20,6 +20,7 @@
   #include <log4cxx/helpers/datagramsocket.h>
   #include <log4cxx/spi/loggingevent.h>
   #include <log4cxx/level.h>
  +#include <log4cxx/helpers/transcoder.h>
   
   #ifdef LOG4CXX_HAVE_SYSLOG
           #include <syslog.h>
  @@ -252,23 +253,20 @@
           if  (!isAsSevereAsThreshold(event->getLevel()))
                   return;
   
  -#if 0
  -//  TODO
  +        LogString msg;
  +        layout->format(msg, event, p);
   
   // On the local host, we can directly use the system function 'syslog'
   // if it is available
   #ifdef LOG4CXX_HAVE_SYSLOG
           if (sw == 0)
           {
  -                 sbuf;
  -                layout->format(sbuf, event);
  -                std::string msg;
  -                log4cxx::helpers::Transcoder::encode(s
  -                USES_CONVERSION;
  +                std::string sbuf;
  +                Transcoder::encode(msg, sbuf);
   
                   // use of "%s" to avoid a security hole
  -        ::syslog(syslogFacility | event->getLevel()->getSyslogEquivalent(),
  -                        "%s", T2A(sbuf.str().c_str()));
  +                 ::syslog(syslogFacility | event->getLevel()->getSyslogEquivalent(),
  +                        "%s", sbuf.c_str());
   
                   return;
           }
  @@ -282,18 +280,16 @@
                   return;
           }
   
  -        LogStringBuffer sbuf;
  -
  -        sbuf << LOG4CXX_STR("<") << (syslogFacility | event->getLevel()->getSyslogEquivalent()) << LOG4CXX_STR(">");
  +        LogString sbuf(1, LOG4CXX_STR('<'));
  +        StringHelper::toString((syslogFacility | event->getLevel()->getSyslogEquivalent()),
  +                  p, sbuf);
  +        sbuf.append(1, LOG4CXX_STR('>'));
           if (facilityPrinting)
           {
  -                sbuf << facilityStr;
  +                sbuf.append(facilityStr);
           }
  -        layout->format(sbuf, event);
  -        //LogLog::debug(sbuf.str());
  -        sw->write(sbuf.str());
  -
  -#endif
  +        sbuf.append(msg);
  +        sw->write(sbuf);
   }
   
   void SyslogAppender::activateOptions(Pool& p)