// // SyslogChannel.h // // $Id: //poco/Main/Foundation/include/Poco/SyslogChannel.h#2 $ // // Library: Foundation // Package: Logging // Module: SyslogChannel // // Definition of the SyslogChannel class specific to UNIX. // // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // and Contributors. // // Permission is hereby granted, free of charge, to any person or organization // obtaining a copy of the software and accompanying documentation covered by // this license (the "Software") to use, reproduce, display, distribute, // execute, and transmit the Software, and to prepare derivative works of the // Software, and to permit third-parties to whom the Software is furnished to // do so, all subject to the following: // // The copyright notices in the Software and this entire statement, including // the above license grant, this restriction and the following disclaimer, // must be included in all copies of the Software, in whole or in part, and // all derivative works of the Software, unless such copies or derivative // works are solely in the form of machine-executable object code generated by // a source language processor. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. // #ifndef Foundation_SyslogChannel_INCLUDED #define Foundation_SyslogChannel_INCLUDED #include "Poco/Foundation.h" #include "Poco/Channel.h" namespace Poco { class Foundation_API SyslogChannel: public Channel /// This Unix-only channel works with the Unix syslog service. { public: enum Option { SYSLOG_PID = 0x01, /// log the pid with each message SYSLOG_CONS = 0x02, /// log on the console if errors in sending SYSLOG_NDELAY = 0x08, /// don't delay open SYSLOG_PERROR = 0x20 /// log to stderr as well (not supported on all platforms) }; enum Facility { SYSLOG_KERN = ( 0<<3), /// kernel messages SYSLOG_USER = ( 1<<3), /// random user-level messages SYSLOG_MAIL = ( 2<<3), /// mail system SYSLOG_DAEMON = ( 3<<3), /// system daemons SYSLOG_AUTH = ( 4<<3), /// security/authorization messages SYSLOG_SYSLOG = ( 5<<3), /// messages generated internally by syslogd SYSLOG_LPR = ( 6<<3), /// line printer subsystem SYSLOG_NEWS = ( 7<<3), /// network news subsystem SYSLOG_UUCP = ( 8<<3), /// UUCP subsystem SYSLOG_CRON = ( 9<<3), /// clock daemon SYSLOG_AUTHPRIV = (10<<3), /// security/authorization messages (private) SYSLOG_FTP = (11<<3), /// ftp daemon SYSLOG_LOCAL0 = (16<<3), /// reserved for local use SYSLOG_LOCAL1 = (17<<3), /// reserved for local use SYSLOG_LOCAL2 = (18<<3), /// reserved for local use SYSLOG_LOCAL3 = (19<<3), /// reserved for local use SYSLOG_LOCAL4 = (20<<3), /// reserved for local use SYSLOG_LOCAL5 = (21<<3), /// reserved for local use SYSLOG_LOCAL6 = (22<<3), /// reserved for local use SYSLOG_LOCAL7 = (23<<3) /// reserved for local use }; SyslogChannel(); /// Creates a SyslogChannel. SyslogChannel(const std::string& name, int options = SYSLOG_CONS, int facility = SYSLOG_USER); /// Creates a SyslogChannel with the given name, options and facility. void open(); /// Opens the SyslogChannel. void close(); /// Closes the SyslogChannel. void log(const Message& msg); /// Sens the message's text to the syslog service. void setProperty(const std::string& name, const std::string& value); /// Sets the property with the given value. /// /// The following properties are supported: /// * name: The name used to identify the source of log messages. /// * facility: The facility added to each log message. See the Facility enumeration for a list of supported values. /// * options: The logging options. See the Option enumeration for a list of supported values. std::string getProperty(const std::string& name) const; /// Returns the value of the property with the given name. static const std::string PROP_NAME; static const std::string PROP_FACILITY; static const std::string PROP_OPTIONS; protected: ~SyslogChannel(); static int getPrio(const Message& msg); private: std::string _name; int _options; int _facility; bool _open; }; } // namespace Poco #endif // Foundation_SyslogChannel_INCLUDED