diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/Instance.cpp | 5 | ||||
-rw-r--r-- | cpp/src/Ice/PropertyNames.cpp | 3 | ||||
-rw-r--r-- | cpp/src/Ice/PropertyNames.h | 2 | ||||
-rw-r--r-- | cpp/src/Ice/SysLoggerI.cpp | 98 | ||||
-rw-r--r-- | cpp/src/Ice/SysLoggerI.h | 8 |
5 files changed, 109 insertions, 7 deletions
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp index 4b03230f149..7bb3fb1cdc6 100644 --- a/cpp/src/Ice/Instance.cpp +++ b/cpp/src/Ice/Instance.cpp @@ -906,7 +906,10 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi { throw InitializationException(__FILE__, __LINE__, "Both syslog and file logger cannot be enabled."); } - _initData.logger = new SysLoggerI(_initData.properties->getProperty("Ice.ProgramName")); + + _initData.logger = + new SysLoggerI(_initData.properties->getProperty("Ice.ProgramName"), + _initData.properties->getPropertyWithDefault("Ice.SyslogFacility", "LOG_USER")); } else #endif diff --git a/cpp/src/Ice/PropertyNames.cpp b/cpp/src/Ice/PropertyNames.cpp index dbbe65b68ba..f32df36e64c 100644 --- a/cpp/src/Ice/PropertyNames.cpp +++ b/cpp/src/Ice/PropertyNames.cpp @@ -8,7 +8,7 @@ // ********************************************************************** // -// Generated by makeprops.py from file ../config/PropertyNames.xml, Fri Oct 16 11:27:10 2009 +// Generated by makeprops.py from file ../config/PropertyNames.xml, Fri Dec 4 10:31:05 2009 // IMPORTANT: Do not edit this file -- any edits made here will be lost! @@ -98,6 +98,7 @@ const IceInternal::Property IcePropsData[] = IceInternal::Property("Ice.ServerIdleTime", false, 0), IceInternal::Property("Ice.StdErr", false, 0), IceInternal::Property("Ice.StdOut", false, 0), + IceInternal::Property("Ice.SyslogFacility", false, 0), IceInternal::Property("Ice.ThreadPool.Client.Size", false, 0), IceInternal::Property("Ice.ThreadPool.Client.SizeMax", false, 0), IceInternal::Property("Ice.ThreadPool.Client.SizeWarn", false, 0), diff --git a/cpp/src/Ice/PropertyNames.h b/cpp/src/Ice/PropertyNames.h index 77655f9d748..7572229ee14 100644 --- a/cpp/src/Ice/PropertyNames.h +++ b/cpp/src/Ice/PropertyNames.h @@ -8,7 +8,7 @@ // ********************************************************************** // -// Generated by makeprops.py from file ../config/PropertyNames.xml, Fri Oct 16 11:27:10 2009 +// Generated by makeprops.py from file ../config/PropertyNames.xml, Fri Dec 4 10:31:05 2009 // IMPORTANT: Do not edit this file -- any edits made here will be lost! diff --git a/cpp/src/Ice/SysLoggerI.cpp b/cpp/src/Ice/SysLoggerI.cpp index 83feda8f981..0fcee5ee760 100644 --- a/cpp/src/Ice/SysLoggerI.cpp +++ b/cpp/src/Ice/SysLoggerI.cpp @@ -8,16 +8,108 @@ // ********************************************************************** #include <Ice/SysLoggerI.h> +#include <Ice/LocalException.h> #include <syslog.h> using namespace std; using namespace Ice; using namespace IceInternal; -Ice::SysLoggerI::SysLoggerI(const string& prefix) +Ice::SysLoggerI::SysLoggerI(const string& prefix, const string& facilityString) +{ + if(facilityString == "LOG_KERN") + { + _facility = LOG_KERN; + } + else if(facilityString == "LOG_USER") + { + _facility = LOG_USER; + } + else if(facilityString == "LOG_MAIL") + { + _facility = LOG_MAIL; + } + else if(facilityString == "LOG_DAEMON") + { + _facility = LOG_DAEMON; + } + else if(facilityString == "LOG_AUTH") + { + _facility = LOG_AUTH; + } + else if(facilityString == "LOG_SYSLOG") + { + _facility = LOG_SYSLOG; + } + else if(facilityString == "LOG_LPR") + { + _facility = LOG_LPR; + } + else if(facilityString == "LOG_NEWS") + { + _facility = LOG_NEWS; + } + else if(facilityString == "LOG_UUCP") + { + _facility = LOG_UUCP; + } + else if(facilityString == "LOG_CRON") + { + _facility = LOG_CRON; + } + else if(facilityString == "LOG_AUTHPRIV") + { + _facility = LOG_AUTHPRIV; + } + else if(facilityString == "LOG_FTP") + { + _facility = LOG_FTP; + } + else if(facilityString == "LOG_LOCAL0") + { + _facility = LOG_LOCAL0; + } + else if(facilityString == "LOG_LOCAL1") + { + _facility = LOG_LOCAL1; + } + else if(facilityString == "LOG_LOCAL2") + { + _facility = LOG_LOCAL2; + } + else if(facilityString == "LOG_LOCAL3") + { + _facility = LOG_LOCAL3; + } + else if(facilityString == "LOG_LOCAL4") + { + _facility = LOG_LOCAL4; + } + else if(facilityString == "LOG_LOCAL5") + { + _facility = LOG_LOCAL5; + } + else if(facilityString == "LOG_LOCAL6") + { + _facility = LOG_LOCAL6; + } + else if(facilityString == "LOG_LOCAL7") + { + _facility = LOG_LOCAL7; + } + else + { + throw InitializationException(__FILE__, __LINE__, "Invalid value for Ice.SyslogFacility: " + facilityString); + } + + int logopt = LOG_PID | LOG_CONS; + openlog(prefix.c_str(), logopt, _facility); +} + +Ice::SysLoggerI::SysLoggerI(const string& prefix, int facility) : + _facility(facility) { int logopt = LOG_PID | LOG_CONS; - int facility = LOG_USER; openlog(prefix.c_str(), logopt, facility); } @@ -58,5 +150,5 @@ Ice::SysLoggerI::error(const string& message) Ice::LoggerPtr Ice::SysLoggerI::cloneWithPrefix(const string& prefix) { - return new SysLoggerI(prefix); + return new SysLoggerI(prefix, _facility); } diff --git a/cpp/src/Ice/SysLoggerI.h b/cpp/src/Ice/SysLoggerI.h index e6d7bc36e93..1e24be68587 100644 --- a/cpp/src/Ice/SysLoggerI.h +++ b/cpp/src/Ice/SysLoggerI.h @@ -20,7 +20,7 @@ class SysLoggerI : public Logger, public ::IceUtil::Mutex { public: - SysLoggerI(const std::string&); + SysLoggerI(const std::string&, const std::string&); ~SysLoggerI(); virtual void print(const std::string&); @@ -28,6 +28,12 @@ public: virtual void warning(const std::string&); virtual void error(const std::string&); virtual LoggerPtr cloneWithPrefix(const std::string&); + +private: + + SysLoggerI(const std::string&, int); + + int _facility; }; } |