diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2009-12-04 11:10:09 -0330 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2009-12-04 11:10:09 -0330 |
commit | 009d41ef816a6c26b0436c2f45f9fffff5f21cda (patch) | |
tree | 3b098a1e77fc46164a6d9695cfe55a46698e70a0 | |
parent | Fixed usage of icestormmigrate and upgradeicegrid.py (bug 3942) (diff) | |
download | ice-009d41ef816a6c26b0436c2f45f9fffff5f21cda.tar.bz2 ice-009d41ef816a6c26b0436c2f45f9fffff5f21cda.tar.xz ice-009d41ef816a6c26b0436c2f45f9fffff5f21cda.zip |
Bug 4336 - Add ability to set facility for syslog
-rw-r--r-- | CHANGES | 4 | ||||
-rw-r--r-- | config/PropertyNames.xml | 1 | ||||
-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 | ||||
-rw-r--r-- | cs/src/Ice/Instance.cs | 3 | ||||
-rw-r--r-- | cs/src/Ice/PropertyNames.cs | 3 | ||||
-rw-r--r-- | cs/src/Ice/SysLoggerI.cs | 122 | ||||
-rw-r--r-- | java/src/Ice/SysLoggerI.java | 127 | ||||
-rw-r--r-- | java/src/IceInternal/Instance.java | 3 | ||||
-rw-r--r-- | java/src/IceInternal/PropertyNames.java | 3 | ||||
-rw-r--r-- | java/test/Freeze/fileLock/db/.gitignore | 0 |
14 files changed, 363 insertions, 19 deletions
@@ -33,6 +33,10 @@ General Changes These entries apply to all relevant language mappings unless otherwise noted. +- When using the system logger (enabled when Ice.UseSyslog is set) it + is now possible to set the facility using the Ice.SyslogFacility + property. The default value is LOG_USER. + - It is now legal to pass an empty name to createObjectAdpaterWithRouter and createObjectAdapterWithEndpoints. If so, a UUID will be generated as the name. diff --git a/config/PropertyNames.xml b/config/PropertyNames.xml index 33bfd8313a7..d36ed2a1d59 100644 --- a/config/PropertyNames.xml +++ b/config/PropertyNames.xml @@ -347,6 +347,7 @@ generated from the section label. <property name="ServerIdleTime" /> <property name="StdErr" /> <property name="StdOut" /> + <property name="SyslogFacility" /> <property name="ThreadPool.Client" class="threadpool" /> <property name="ThreadPool.Server" class="threadpool" /> <property name="ThreadPriority"/> 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; }; } diff --git a/cs/src/Ice/Instance.cs b/cs/src/Ice/Instance.cs index 586979d9be4..492bdc1dc40 100644 --- a/cs/src/Ice/Instance.cs +++ b/cs/src/Ice/Instance.cs @@ -679,7 +679,8 @@ namespace IceInternal { throw new Ice.InitializationException("Ice.LogFile and Ice.UseSyslog cannot both be set."); } - _initData.logger = new Ice.SysLoggerI(_initData.properties.getProperty("Ice.ProgramName")); + _initData.logger = new Ice.SysLoggerI(_initData.properties.getProperty("Ice.ProgramName"), + _initData.properties.getPropertyWithDefault("Ice.SyslogFacility", "LOG_USER")); } else if(logfile.Length != 0 || Ice.Util.getProcessLogger() is Ice.LoggerI) { diff --git a/cs/src/Ice/PropertyNames.cs b/cs/src/Ice/PropertyNames.cs index 3ffb7bf95be..ea07c858140 100644 --- a/cs/src/Ice/PropertyNames.cs +++ b/cs/src/Ice/PropertyNames.cs @@ -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! @@ -100,6 +100,7 @@ namespace IceInternal new Property(@"^Ice\.ServerIdleTime$", false, null), new Property(@"^Ice\.StdErr$", false, null), new Property(@"^Ice\.StdOut$", false, null), + new Property(@"^Ice\.SyslogFacility$", false, null), new Property(@"^Ice\.ThreadPool\.Client\.Size$", false, null), new Property(@"^Ice\.ThreadPool\.Client\.SizeMax$", false, null), new Property(@"^Ice\.ThreadPool\.Client\.SizeWarn$", false, null), diff --git a/cs/src/Ice/SysLoggerI.cs b/cs/src/Ice/SysLoggerI.cs index 0dcf2274039..cf64f67be86 100644 --- a/cs/src/Ice/SysLoggerI.cs +++ b/cs/src/Ice/SysLoggerI.cs @@ -14,9 +14,105 @@ namespace Ice public sealed class SysLoggerI : Logger { - public SysLoggerI(string ident) + public SysLoggerI(string ident, string facilityString) + { + int facility; + if(facilityString.Equals("LOG_KERN")) + { + facility = LOG_KERN; + } + else if(facilityString.Equals("LOG_USER")) + { + facility = LOG_USER; + } + else if(facilityString.Equals("LOG_MAIL")) + { + facility = LOG_MAIL; + } + else if(facilityString.Equals("LOG_DAEMON")) + { + facility = LOG_DAEMON; + } + else if(facilityString.Equals("LOG_AUTH")) + { + facility = LOG_AUTH; + } + else if(facilityString.Equals("LOG_SYSLOG")) + { + facility = LOG_SYSLOG; + } + else if(facilityString.Equals("LOG_LPR")) + { + facility = LOG_LPR; + } + else if(facilityString.Equals("LOG_NEWS")) + { + facility = LOG_NEWS; + } + else if(facilityString.Equals("LOG_UUCP")) + { + facility = LOG_UUCP; + } + else if(facilityString.Equals("LOG_CRON")) + { + facility = LOG_CRON; + } + else if(facilityString.Equals("LOG_AUTHPRIV")) + { + facility = LOG_AUTHPRIV; + } + else if(facilityString.Equals("LOG_FTP")) + { + facility = LOG_FTP; + } + else if(facilityString.Equals("LOG_LOCAL0")) + { + facility = LOG_LOCAL0; + } + else if(facilityString.Equals("LOG_LOCAL1")) + { + facility = LOG_LOCAL1; + } + else if(facilityString.Equals("LOG_LOCAL2")) + { + facility = LOG_LOCAL2; + } + else if(facilityString.Equals("LOG_LOCAL3")) + { + facility = LOG_LOCAL3; + } + else if(facilityString.Equals("LOG_LOCAL4")) + { + facility = LOG_LOCAL4; + } + else if(facilityString.Equals("LOG_LOCAL5")) + { + facility = LOG_LOCAL5; + } + else if(facilityString.Equals("LOG_LOCAL6")) + { + facility = LOG_LOCAL6; + } + else if(facilityString.Equals("LOG_LOCAL7")) + { + facility = LOG_LOCAL7; + } + else + { + throw new Ice.InitializationException("Invalid value for Ice.SyslogFacility: " + facilityString); + } + initialize(ident, facility); + } + + private SysLoggerI(string ident, int facility) + { + initialize(ident, facility); + } + + private void initialize(string ident, int facility) { _ident = ident; + _facility = facility; // // Open a datagram socket to communicate with the localhost @@ -57,7 +153,7 @@ namespace Ice public Logger cloneWithPrefix(string prefix) { - return new SysLoggerI(prefix); + return new SysLoggerI(prefix, _facility); } private void log(int severity, string message) @@ -72,7 +168,7 @@ namespace Ice // colon character and the message. // - int priority = (LOG_USER << 3) | severity; + int priority = (_facility << 3) | severity; string msg = '<' + priority + '>' + _ident + ": " + message; @@ -91,6 +187,7 @@ namespace Ice } private string _ident; + private int _facility; private UdpClient _socket; private System.Net.IPAddress _host; private static int _port = 514; @@ -98,7 +195,26 @@ namespace Ice // // Syslog facilities facilities (as defined in syslog.h) // + private static readonly int LOG_KERN = 0; private static readonly int LOG_USER = 1; + private static readonly int LOG_MAIL = 2; + private static readonly int LOG_DAEMON = 3; + private static readonly int LOG_AUTH = 4; + private static readonly int LOG_SYSLOG = 5; + private static readonly int LOG_LPR = 6; + private static readonly int LOG_NEWS = 7; + private static readonly int LOG_UUCP = 8; + private static readonly int LOG_CRON = 9; + private static readonly int LOG_AUTHPRIV = 10; + private static readonly int LOG_FTP = 11; + private static readonly int LOG_LOCAL0 = 16; + private static readonly int LOG_LOCAL1 = 17; + private static readonly int LOG_LOCAL2 = 18; + private static readonly int LOG_LOCAL3 = 19; + private static readonly int LOG_LOCAL4 = 20; + private static readonly int LOG_LOCAL5 = 21; + private static readonly int LOG_LOCAL6 = 22; + private static readonly int LOG_LOCAL7 = 23; // // Syslog priorities (as defined in syslog.h) diff --git a/java/src/Ice/SysLoggerI.java b/java/src/Ice/SysLoggerI.java index e782aa18f7f..ec580cf8c4b 100644 --- a/java/src/Ice/SysLoggerI.java +++ b/java/src/Ice/SysLoggerI.java @@ -17,9 +17,107 @@ import java.io.IOException; public final class SysLoggerI implements Logger { public - SysLoggerI(String ident) + SysLoggerI(String ident, String facilityString) + { + int facility; + if(facilityString.equals("LOG_KERN")) + { + facility = LOG_KERN; + } + else if(facilityString.equals("LOG_USER")) + { + facility = LOG_USER; + } + else if(facilityString.equals("LOG_MAIL")) + { + facility = LOG_MAIL; + } + else if(facilityString.equals("LOG_DAEMON")) + { + facility = LOG_DAEMON; + } + else if(facilityString.equals("LOG_AUTH")) + { + facility = LOG_AUTH; + } + else if(facilityString.equals("LOG_SYSLOG")) + { + facility = LOG_SYSLOG; + } + else if(facilityString.equals("LOG_LPR")) + { + facility = LOG_LPR; + } + else if(facilityString.equals("LOG_NEWS")) + { + facility = LOG_NEWS; + } + else if(facilityString.equals("LOG_UUCP")) + { + facility = LOG_UUCP; + } + else if(facilityString.equals("LOG_CRON")) + { + facility = LOG_CRON; + } + else if(facilityString.equals("LOG_AUTHPRIV")) + { + facility = LOG_AUTHPRIV; + } + else if(facilityString.equals("LOG_FTP")) + { + facility = LOG_FTP; + } + else if(facilityString.equals("LOG_LOCAL0")) + { + facility = LOG_LOCAL0; + } + else if(facilityString.equals("LOG_LOCAL1")) + { + facility = LOG_LOCAL1; + } + else if(facilityString.equals("LOG_LOCAL2")) + { + facility = LOG_LOCAL2; + } + else if(facilityString.equals("LOG_LOCAL3")) + { + facility = LOG_LOCAL3; + } + else if(facilityString.equals("LOG_LOCAL4")) + { + facility = LOG_LOCAL4; + } + else if(facilityString.equals("LOG_LOCAL5")) + { + facility = LOG_LOCAL5; + } + else if(facilityString.equals("LOG_LOCAL6")) + { + facility = LOG_LOCAL6; + } + else if(facilityString.equals("LOG_LOCAL7")) + { + facility = LOG_LOCAL7; + } + else + { + throw new Ice.InitializationException("Invalid value for Ice.SyslogFacility: " + facilityString); + } + initialize(ident, facility); + } + + private + SysLoggerI(String ident, int facility) + { + initialize(ident, facility); + } + + private void + initialize(String ident, int facility) { _ident = ident; + _facility = facility; // // Open a datagram socket to communicate with the localhost @@ -66,7 +164,7 @@ public final class SysLoggerI implements Logger public Logger cloneWithPrefix(String prefix) { - return new SysLoggerI(prefix); + return new SysLoggerI(prefix, _facility); } private void @@ -82,7 +180,7 @@ public final class SysLoggerI implements Logger // colon character and the message. // - int priority = (LOG_USER << 3) | severity; + int priority = (_facility << 3) | severity; String msg = '<' + Integer.toString(priority) + '>' + _ident + ": " + message; @@ -99,14 +197,34 @@ public final class SysLoggerI implements Logger } private String _ident; + private int _facility; private DatagramSocket _socket; private InetAddress _host; private static int _port = 514; // - // Syslog facilities facilities (as defined in syslog.h) + // Syslog facilities (as defined in syslog.h) // + private final static int LOG_KERN = 0; private final static int LOG_USER = 1; + private final static int LOG_MAIL = 2; + private final static int LOG_DAEMON = 3; + private final static int LOG_AUTH = 4; + private final static int LOG_SYSLOG = 5; + private final static int LOG_LPR = 6; + private final static int LOG_NEWS = 7; + private final static int LOG_UUCP = 8; + private final static int LOG_CRON = 9; + private final static int LOG_AUTHPRIV = 10; + private final static int LOG_FTP = 11; + private final static int LOG_LOCAL0 = 16; + private final static int LOG_LOCAL1 = 17; + private final static int LOG_LOCAL2 = 18; + private final static int LOG_LOCAL3 = 19; + private final static int LOG_LOCAL4 = 20; + private final static int LOG_LOCAL5 = 21; + private final static int LOG_LOCAL6 = 22; + private final static int LOG_LOCAL7 = 23; // // Syslog priorities (as defined in syslog.h) @@ -115,4 +233,3 @@ public final class SysLoggerI implements Logger private final static int LOG_WARNING = 4; private final static int LOG_INFO = 6; } - diff --git a/java/src/IceInternal/Instance.java b/java/src/IceInternal/Instance.java index 151ea12a466..ede817a338c 100644 --- a/java/src/IceInternal/Instance.java +++ b/java/src/IceInternal/Instance.java @@ -634,7 +634,8 @@ public final class Instance { throw new Ice.InitializationException("Both syslog and file logger cannot be enabled."); } - _initData.logger = new Ice.SysLoggerI(_initData.properties.getProperty("Ice.ProgramName")); + _initData.logger = new Ice.SysLoggerI(_initData.properties.getProperty("Ice.ProgramName"), + _initData.properties.getPropertyWithDefault("Ice.SyslogFacility", "LOG_USER")); } else if(logfile.length() != 0) { diff --git a/java/src/IceInternal/PropertyNames.java b/java/src/IceInternal/PropertyNames.java index 682d7a360d9..56084f023c1 100644 --- a/java/src/IceInternal/PropertyNames.java +++ b/java/src/IceInternal/PropertyNames.java @@ -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! @@ -100,6 +100,7 @@ public final class PropertyNames new Property("Ice\\.ServerIdleTime", false, null), new Property("Ice\\.StdErr", false, null), new Property("Ice\\.StdOut", false, null), + new Property("Ice\\.SyslogFacility", false, null), new Property("Ice\\.ThreadPool\\.Client\\.Size", false, null), new Property("Ice\\.ThreadPool\\.Client\\.SizeMax", false, null), new Property("Ice\\.ThreadPool\\.Client\\.SizeWarn", false, null), diff --git a/java/test/Freeze/fileLock/db/.gitignore b/java/test/Freeze/fileLock/db/.gitignore new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/java/test/Freeze/fileLock/db/.gitignore |