X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FSyslogUDPTarget.hh;h=71732d5ae9fa8269f973f6c751c5a77193b93dd3;hb=5443435c4c2b6e4386c5334b5b8358273f2bae93;hp=e6f35ffc1f381afa71781c4ff46745c788237e27;hpb=6cfb0a8ca46d3cb0cc521a75118027ecc3fa4ef1;p=senf.git
diff --git a/Utils/Logger/SyslogUDPTarget.hh b/Utils/Logger/SyslogUDPTarget.hh
index e6f35ff..71732d5 100644
--- a/Utils/Logger/SyslogUDPTarget.hh
+++ b/Utils/Logger/SyslogUDPTarget.hh
@@ -43,9 +43,9 @@ namespace log {
/** \brief Log target writing UDP syslog packets
- The SyslogUDPTarget will send all log messages directly via UDP to a target host. This host
- should have a syslog daemon or relay running. The protocol is defined in RFC-3164.
+ The SyslogUDPTarget will send all %log messages directly via UDP to a target host. This
+ host should have a syslog daemon or relay running. The protocol is defined in RFC-3164.
This log target has some important benefits:
@@ -66,7 +66,7 @@ namespace log {
the default facility is LOG_USER
- The SENF log levels are mapped to syslog levels in the following way:
+ The SENF %log levels are mapped to syslog levels in the following way:
senf::log::VERBOSE | \c LOG_DEBUG |
@@ -78,8 +78,8 @@ namespace log {
\note Since the UDP syslog packets are limited to 1024 characters and there must be some
- space left so a relay may optionally add a timestamp and hostname section, the log
- messages are split after 896 characters. Additionally the log messages are split at each
+ space left so a relay may optionally add a timestamp and hostname section, the %log
+ messages are split after 896 characters. Additionally the %log messages are split at each
newline char since non-printable characters are not allowed.
\implementation The RFC only \e recommends the exact message format. This allows us to
@@ -115,17 +115,27 @@ namespace log {
using detail::LogFormat::timeFormat;
using detail::LogFormat::tag;
+ bool syslog() const; ///< \c true, if using syslog format, \c false otherwise
+ /**< When syslog format is disabled, messages are not
+ formated as valid syslog messages but sent using plain
+ UDP. */
+ void syslog(bool enabled=true); ///< Set syslog format
+
private:
+ void init();
void v_write(time_type timestamp, std::string const & stream,
std::string const & area, unsigned level,
std::string const & message);
+ void consoleFormat(std::ostream & os);
+
int facility_;
typedef senf::ClientSocketHandle< senf::MakeSocketPolicy<
senf::DatagramFramingPolicy,
senf::ConnectedCommunicationPolicy,
senf::WriteablePolicy>::policy > Handle;
Handle handle_;
+ bool syslogFormat_;
public:
enum LogFacility {
@@ -154,14 +164,14 @@ namespace log {
struct RegisterConsole {
RegisterConsole();
- static void create(senf::INet4SocketAddress const & target,
- LogFacility facility = USER);
- static void create(senf::INet4Address const & target,
- LogFacility facility = USER);
- static void create(senf::INet6SocketAddress const & target,
- LogFacility facility = USER);
- static void create(senf::INet6Address const & target,
- LogFacility facility = USER);
+ static boost::shared_ptr create(
+ senf::INet4SocketAddress const & target, LogFacility facility = USER);
+ static boost::shared_ptr create(
+ senf::INet4Address const & target, LogFacility facility = USER);
+ static boost::shared_ptr create(
+ senf::INet6SocketAddress const & target, LogFacility facility = USER);
+ static boost::shared_ptr create(
+ senf::INet6Address const & target, LogFacility facility = USER);
static RegisterConsole instance;
};
};