// Module: Log4CPLUS // File: layout.cxx // Created: 6/2001 // Author: Tad E. Smith // // // Copyright 2001-2009 Tad E. Smith // // Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include #include #include #include #include namespace log4cplus { extern helpers::Time TTCCLayout_time_base; void initializeLayout () { TTCCLayout_time_base = helpers::Time::gettimeofday (); } /////////////////////////////////////////////////////////////////////////////// // log4cplus::SimpleLayout public methods /////////////////////////////////////////////////////////////////////////////// void SimpleLayout::formatAndAppend(log4cplus::tostream& output, const log4cplus::spi::InternalLoggingEvent& event) { output << llmCache.toString(event.getLogLevel()) << LOG4CPLUS_TEXT(" - ") << event.getMessage() << LOG4CPLUS_TEXT("\n"); } /////////////////////////////////////////////////////////////////////////////// // log4cplus::TTCCLayout ctors and dtor /////////////////////////////////////////////////////////////////////////////// TTCCLayout::TTCCLayout(bool use_gmtime_) : dateFormat(), use_gmtime(use_gmtime_) { } TTCCLayout::TTCCLayout(const log4cplus::helpers::Properties& properties) : Layout(properties), dateFormat(), use_gmtime(false) { if(properties.exists( LOG4CPLUS_TEXT("DateFormat") )) { dateFormat = properties.getProperty( LOG4CPLUS_TEXT("DateFormat") ); } tstring tmp = properties.getProperty( LOG4CPLUS_TEXT("Use_gmtime") ); use_gmtime = (helpers::toLower(tmp) == LOG4CPLUS_TEXT("true")); } TTCCLayout::~TTCCLayout() { } /////////////////////////////////////////////////////////////////////////////// // log4cplus::TTCCLayout public methods /////////////////////////////////////////////////////////////////////////////// void TTCCLayout::formatAndAppend(log4cplus::tostream& output, const log4cplus::spi::InternalLoggingEvent& event) { if (dateFormat.empty ()) { helpers::Time const rel_time = event.getTimestamp () - TTCCLayout_time_base; tchar const old_fill = output.fill (); time_t const sec = rel_time.sec (); if (sec != 0) output << sec << std::setfill (LOG4CPLUS_TEXT ('0')) << std::setw (3); output << rel_time.usec () / 1000; output.fill (old_fill); } else output << event.getTimestamp().getFormattedTime(dateFormat, use_gmtime); output << LOG4CPLUS_TEXT(" [") << event.getThread() << LOG4CPLUS_TEXT("] ") << llmCache.toString(event.getLogLevel()) << LOG4CPLUS_TEXT(" ") << event.getLoggerName() << LOG4CPLUS_TEXT(" <") << event.getNDC() << LOG4CPLUS_TEXT("> - ") << event.getMessage() << LOG4CPLUS_TEXT("\n"); } } // namespace log4cplus