diff options
author | Aleksander Donchev <aleksander.donchev@partner.bmw.de> | 2013-07-08 11:27:30 +0200 |
---|---|---|
committer | Aleksander Donchev <aleksander.donchev@partner.bmw.de> | 2013-07-10 14:59:18 +0200 |
commit | de452ebdcfe9ca3cd3b2467c3e25960e7a58e49e (patch) | |
tree | f210a063672aa5a8abc2a54fe3c78ddaf9dd625a /AudioManagerDaemon/src/CAmLog.cpp | |
parent | e18331e64352b881268ca6f8db1d127113dd1519 (diff) | |
download | audiomanager-de452ebdcfe9ca3cd3b2467c3e25960e7a58e49e.tar.gz |
Added 'Dump' method to the database handler and to the telnet server (Info -> Dump). Unit tests for the database handler splited into separate file. Base log class added in order to support logging into a file.
Signed-off-by: Christian Linke <christian.linke@bmw.de>
Diffstat (limited to 'AudioManagerDaemon/src/CAmLog.cpp')
-rw-r--r-- | AudioManagerDaemon/src/CAmLog.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/AudioManagerDaemon/src/CAmLog.cpp b/AudioManagerDaemon/src/CAmLog.cpp new file mode 100644 index 0000000..291408f --- /dev/null +++ b/AudioManagerDaemon/src/CAmLog.cpp @@ -0,0 +1,99 @@ +/** + * Copyright (C) 2012, BMW AG + * + * This file is part of GENIVI Project AudioManager. + * + * Contributions are licensed to the GENIVI Alliance under one or more + * Contribution License Agreements. + * + * \copyright + * This Source Code Form is subject to the terms of the + * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with + * this file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * + * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013 + * + * \file CAmLog.cpp + * For further information see http://www.genivi.org/. + * + */ + +#include "CAmLog.h" + + +void CAmLog::CAmFileLogger::generateLogFilename(std::string &result) +{ + static uint32_t logFileID = 1; + time_t rawtime; + time (&rawtime); + + std::ostringstream stream; + stream << DEFAULT_LOG_FOLDER << DEFAULT_LOGFILE_PREFIX << logFileID << "_" << rawtime << DEFAULT_LOGFILE_EXT; + logFileID++; + result = stream.str(); +} + +CAmLog::CAmFileLogger::~CAmFileLogger() +{ + if (mOutputStream) + { + std::ofstream* of = static_cast<std::ofstream*>(mOutputStream); + of->close(); + DEL(mOutputStream) + } +} + +CAmLog::CAmLog(const eCAmLogType type ):mLogType(type) +{ + instantiateLogger(type); +} + +CAmLog::CAmLog():mLogType(eCAmLogStdout) +{ + instantiateLogger((const eCAmLogType)eCAmLogStdout); +} + +CAmLog::~CAmLog() +{ + releaseLogger(); +} + +void CAmLog::releaseLogger() +{ + if(mLogger) + DEL(mLogger) +} + +void CAmLog::instantiateLogger( const eCAmLogType type) +{ + if( eCAmLogStdout == type ) + mLogger = new CAmStdOutLogger(); + else if( eCAmLogFile == type ) + { + std::string filename(""); + CAmLog::CAmFileLogger::generateLogFilename(filename); + mLogger = new CAmFileLogger(filename); + } +} + +CAmLog *CAmLog::getDefaultLog() +{ + static CAmLog theInstance; + return &theInstance; +} + +void CAmLog::setLogType( const eCAmLogType type) +{ + if(mLogType!=type) + { + mLogType = type; + releaseLogger(); + instantiateLogger(type); + } +} + +eCAmLogType CAmLog::getLogType() const +{ + return mLogType; +} |