X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FIOStreamTarget.cc;h=b020e34b32344d66321aa94ecbe1ec3638e62f42;hb=61dc3812717cdc89fa2402006d4009236b72dc8f;hp=7a57ec2e4cd989ad1f926ac818570db8756c9788;hpb=40fa3e3f1e0f639c68bd15bf469e35045f94abee;p=senf.git diff --git a/Utils/Logger/IOStreamTarget.cc b/Utils/Logger/IOStreamTarget.cc index 7a57ec2..b020e34 100644 --- a/Utils/Logger/IOStreamTarget.cc +++ b/Utils/Logger/IOStreamTarget.cc @@ -28,9 +28,9 @@ // Custom includes #include +#include #include #include -#include //#include "IOStreamTarget.mpp" #define prefix_ @@ -39,46 +39,31 @@ /////////////////////////////////////////////////////////////////////////// // senf::log::IOStreamTarget -const char * const senf::log::IOStreamTarget::LEVELNAMES_[8] = { - "NONE", "VERBOSE", "NOTICE", "MESSAGE", "IMPORTANT", "CRITICAL", "FATAL", "DISABLED" }; - -prefix_ senf::log::IOStreamTarget::IOStreamTarget(std::ostream & os) - : stream_(os) -{ - std::locale const & loc (stream_.getloc()); - if (!std::has_facet(loc)) - stream_.imbue( std::locale( - loc, new boost::posix_time::time_facet("%Y-%m-%d %H:%M:%S.%f-0000")) ); -} - -//////////////////////////////////////// -// private members - prefix_ void senf::log::IOStreamTarget::v_write(time_type timestamp, std::string const & stream, std::string const & area, unsigned level, std::string const & message) { - std::string m (boost::trim_right_copy(message)); + std::string m (message); + boost::trim_right(m); + detail::quoteNonPrintable(m); - typedef boost::char_separator Separator; - typedef boost::tokenizer Tokenizer; - Separator separator ("\n"); - Tokenizer tokenizer (m, separator); - Tokenizer::iterator i (tokenizer.begin()); - Tokenizer::iterator const i_end (tokenizer.end()); + if (isPlainFormat()) + stream_ << m << std::endl; + else { + std::string const & prf (prefix(timestamp, stream, area, level)); - char sep (' '); + typedef boost::char_separator Separator; + typedef boost::tokenizer Tokenizer; + Separator separator ("\n"); + Tokenizer tokenizer (m, separator); + Tokenizer::iterator i (tokenizer.begin()); + Tokenizer::iterator const i_end (tokenizer.end()); - for (; i != i_end; ++i) { - stream_ << senf::ClockService::abstime(timestamp) << sep; - stream_ << "[" << LEVELNAMES_[level] << "]"; - if (area != "senf::log::DefaultArea") - stream_ << " [" << area << "]"; - stream_ << " " << *i << "\n"; - sep = '-'; + for (; i != i_end; ++i) + stream_ << prf << *i << "\n"; + stream_ << std::flush; } - stream_ << std::flush; } ///////////////////////////////cc.e////////////////////////////////////////