X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FLogger%2FSyslogUDPTarget.cc;h=c20d5584c4c05089992dfa7205e7de37dc384728;hb=ab7ff164ab5ae711ec09ce2b24228510f1ffdcff;hp=cd8d6b3bc7c4e47752e28a99b9963dcaf26eb225;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Utils/Logger/SyslogUDPTarget.cc b/senf/Utils/Logger/SyslogUDPTarget.cc index cd8d6b3..c20d558 100644 --- a/senf/Utils/Logger/SyslogUDPTarget.cc +++ b/senf/Utils/Logger/SyslogUDPTarget.cc @@ -1,24 +1,29 @@ // $Id$ // -// Copyright (C) 2008 +// Copyright (C) 2008 // Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY -// Stefan Bund // -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the -// Free Software Foundation, Inc., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// All Rights Reserved. +// +// Contributor(s): +// Stefan Bund /** \file \brief SyslogUDPTarget non-inline non-template implementation */ @@ -30,29 +35,32 @@ #include #include #include -#include "../Console/Console.hh" +#include +#include +#include //#include "SyslogUDPTarget.mpp" #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// prefix_ void senf::log::SyslogUDPTarget::init() { - namespace kw = senf::console::kw; + namespace kw = console::kw; + namespace fty = console::factory; consoleDir().remove("format"); - consoleDir().add("format", senf::membind(&SyslogUDPTarget::consoleFormat, this)) - .doc("Show the current log message format."); - consoleDir().add("syslog", senf::membind( - static_cast(&SyslogUDPTarget::syslog), - this)) - .arg("flag","new syslog format state", - kw::default_value=true) - .doc("Change the syslog format flag. By default, syslog formating is enabled. In this\n" - "state, the udp target will send out minimal but valid syslog format messages.\n" - "\n" - "Disabling syslog format will remove the syslog prefix. Log messages will then be\n" - "sent using plain UDP."); + consoleDir() + .add("format", fty::Command(&SyslogUDPTarget::consoleFormat, this) + .doc("Show the current log message format.") ); + consoleDir() + .add("syslog", fty::Command(SENF_MEMBINDFNP(void, SyslogUDPTarget, syslog, (bool))) + .arg("flag","new syslog format state", + kw::default_value=true) + .doc("Change the syslog format flag. By default, syslog formating is enabled. In this\n" + "state, the udp target will send out minimal but valid syslog format messages.\n" + "\n" + "Disabling syslog format will remove the syslog prefix. Log messages will then be\n" + "sent using plain UDP.") ); } prefix_ void senf::log::SyslogUDPTarget::v_write(time_type timestamp, std::string const & stream, @@ -68,7 +76,7 @@ prefix_ void senf::log::SyslogUDPTarget::v_write(time_type timestamp, std::strin // or message will not inadvertently be interpreted as date or hostname by a receiving syslog // daemon or proxy if (syslogFormat_) - prfstream << '<' << (facility_ | senf::log::SyslogTarget::LEVELMAP[level]) << "> "; + prfstream << '<' << (facility_ | SyslogTarget::LEVELMAP[level]) << "> "; prfstream << prefix(timestamp, stream, area, level); std::string const & prf (prfstream.str()); @@ -81,7 +89,7 @@ prefix_ void senf::log::SyslogUDPTarget::v_write(time_type timestamp, std::strin std::string line; unsigned sz (896-prf.size()); - for (; i != i_end; ++i) + for (; i != i_end; ++i) for (unsigned j (0); j < i->size(); j += sz) { line = prf; line += std::string(*i, j, sz); @@ -107,54 +115,56 @@ namespace log { prefix_ senf::log::SyslogUDPTarget::RegisterConsole::RegisterConsole() { - namespace kw = senf::console::kw; - - detail::TargetRegistry::instance().consoleDir().add( - "udp-target", - static_cast( - &RegisterConsole::create)) - .arg("address", "target address to send log messages to") - .arg("facility", "syslog facility to send messages to. One of\n" - " AUTHPRIV CRON DAEMON FTP KERN LPR MAIL NEWS SYSLOG USER\n" - " UUCP LOCAL0 LOCAL1 LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7", - kw::default_value = USER) - .doc("Create new udp target. The {address} can be an IPv4 or IPv6 address. If the port\n" - "number is omitted, it defaults to the default syslog port 514. Examples:\n" - "\n" - "Create new udp target sending messages to the syslog daemon running at localhost\n" - " $ udp-target localhost\n" - " \n" - "\n" - "In a configuration file, create new udp target and set some parameters (If\n" - "written on one line, this works at the console too:\n" - " /sys/log/udp-target localhost:2345 LOCAL2 {\n" - " route (IMPORTANT); # route all important messages\n" - " timeFormat \"\"; # use non-formatted time format\n" - " showArea false; # don't show log area\n" - " syslog false; # no syslog format, just plain udp\n" - " }\n"); - detail::TargetRegistry::instance().consoleDir().add( - "udp-target", - static_cast( - &RegisterConsole::create)) - .arg("address") - .arg("facility", kw::default_value = USER); - detail::TargetRegistry::instance().consoleDir().add( - "udp-target", - static_cast( - &RegisterConsole::create)) - .arg("address") - .arg("facility", kw::default_value = USER); - detail::TargetRegistry::instance().consoleDir().add( - "udp-target", - static_cast( - &RegisterConsole::create)) - .arg("address") - .arg("facility", kw::default_value = USER); + namespace kw = console::kw; + namespace fty = console::factory; + + detail::TargetRegistry::instance().consoleDir() + .add("udp-target", + fty::Command(&RegisterConsole::create) + .arg("address", "target address to send log messages to") + .arg("facility", "syslog facility to send messages to. One of\n" + " AUTHPRIV CRON DAEMON FTP KERN LPR MAIL NEWS SYSLOG USER\n" + " UUCP LOCAL0 LOCAL1 LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7", + kw::default_value = USER) + .doc("Create new udp target. The {address} can be an IPv4 or IPv6 address. If the port\n" + "number is omitted, it defaults to the default syslog port 514. Examples:\n" + "\n" + "Create new udp target sending messages to the syslog daemon running at localhost\n" + " $ udp-target localhost\n" + " \n" + "\n" + "In a configuration file, create new udp target and set some parameters (If\n" + "written on one line, this works at the console too:\n" + " /sys/log/udp-target localhost:2345 LOCAL2 {\n" + " route (IMPORTANT); # route all important messages\n" + " timeFormat \"\"; # use non-formatted time format\n" + " showArea false; # don't show log area\n" + " syslog false; # no syslog format, just plain udp\n" + " }\n") ); + detail::TargetRegistry::instance().consoleDir() + .add("udp-target", + fty::Command(&RegisterConsole::create) + .arg("address") + .arg("facility", kw::default_value = USER) ); + detail::TargetRegistry::instance().consoleDir() + .add("udp-target", + fty::Command(&RegisterConsole::create) + .arg("address") + .arg("facility", kw::default_value = USER) ); + detail::TargetRegistry::instance().consoleDir() + .add("udp-target", + fty::Command(&RegisterConsole::create) + .arg("address") + .arg("facility", kw::default_value = USER) ); } prefix_ boost::shared_ptr -senf::log::SyslogUDPTarget::RegisterConsole::create(senf::INet4SocketAddress const & target, +senf::log::SyslogUDPTarget::RegisterConsole::create(INet4SocketAddress const & target, LogFacility facility) { std::auto_ptr tp (new SyslogUDPTarget(target, facility)); @@ -164,7 +174,7 @@ senf::log::SyslogUDPTarget::RegisterConsole::create(senf::INet4SocketAddress con } prefix_ boost::shared_ptr -senf::log::SyslogUDPTarget::RegisterConsole::create(senf::INet4Address const & target, +senf::log::SyslogUDPTarget::RegisterConsole::create(INet4Address const & target, LogFacility facility) { std::auto_ptr tp (new SyslogUDPTarget(target, facility)); @@ -174,7 +184,7 @@ senf::log::SyslogUDPTarget::RegisterConsole::create(senf::INet4Address const & t } prefix_ boost::shared_ptr -senf::log::SyslogUDPTarget::RegisterConsole::create(senf::INet6SocketAddress const & target, +senf::log::SyslogUDPTarget::RegisterConsole::create(INet6SocketAddress const & target, LogFacility facility) { std::auto_ptr tp (new SyslogUDPTarget(target, facility)); @@ -184,7 +194,7 @@ senf::log::SyslogUDPTarget::RegisterConsole::create(senf::INet6SocketAddress con } prefix_ boost::shared_ptr -senf::log::SyslogUDPTarget::RegisterConsole::create(senf::INet6Address const & target, +senf::log::SyslogUDPTarget::RegisterConsole::create(INet6Address const & target, LogFacility facility) { std::auto_ptr tp (new SyslogUDPTarget(target, facility)); @@ -193,7 +203,7 @@ senf::log::SyslogUDPTarget::RegisterConsole::create(senf::INet6Address const & t return tg.consoleDir().node().thisptr(); } -///////////////////////////////cc.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_ //#include "SyslogUDPTarget.mpp"