summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/Ice/Instance.cpp5
-rw-r--r--cpp/src/Ice/PropertyNames.cpp3
-rw-r--r--cpp/src/Ice/PropertyNames.h2
-rw-r--r--cpp/src/Ice/SysLoggerI.cpp98
-rw-r--r--cpp/src/Ice/SysLoggerI.h8
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;
};
}