From 0c6eac6b8ca7d363288890eda1a98ce167987d48 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 3 May 2007 00:32:44 +0000 Subject: Initial import git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@1 6ecfd1a5-f3ed-3746-8530-beee90d26b22 --- pokemod/Debug.cpp | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 pokemod/Debug.cpp (limited to 'pokemod/Debug.cpp') diff --git a/pokemod/Debug.cpp b/pokemod/Debug.cpp new file mode 100644 index 00000000..9790ea20 --- /dev/null +++ b/pokemod/Debug.cpp @@ -0,0 +1,87 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: Debug.cpp +// Purpose: Define logging abilities for a PokéMod +// Author: Ben Boeckel +// Modified by: Ben Boeckel +// Created: Wed Feb 14 23:44:39 2007 +// Copyright: ©2007 Ben Boeckel and Nerdy Productions +// Licence: +// 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. +// +// 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. +// +// 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., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +///////////////////////////////////////////////////////////////////////////// + +#include "Debug.h" + +#ifdef PM_DEBUG + +// Declare an instance of the debug window +#ifdef PM_DEBUG_OUTPUT_DEBUG +debugWindow debug = new debugWindow(); +#endif + +extern int PMdebugLevel; + +void PokeMod::Log(const char *msg, int level) +{ + // Actual strings of the debugging levels + const char *PokeModDebugStr[8] = {"Emergency", "Alert", "Critical Error", "Error", "Warning", "Notice", "Info", "Debug"}; + // Only log if wanted + if (level <= PMdebugLevel) + { + // Get the current time + time_t curTimeSec = time(NULL); + PMString curTime = asctime(localtime(&curTimeSec)); + curTime.erase(curTime.find('\n')); + // Get the actual output message + PMString output("%s (%s): %s", PokeModDebugStr[level], curTime.c_str(), msg); + // Output to the command window +# ifdef PM_DEBUG_OUTPUT_CONSOLE + std::cout << output << std::endl; +# endif + // Output to the debugging console +# ifdef PM_DEBUG_OUTPUT_DEBUG + if (debug.m_Show[level].IsChecked()) + debug.m_Debug.Append(output); +# endif + // Output to the debugging log +# ifdef PM_DEBUG_OUTPUT_FILE + std::ofstream flog("PokeMod.log", std::ios::app); + // Output erros if the file fails + if (!flog) + { +# ifdef PM_DEBUG_OUTPUT_CONSOLE + std::cout << "Alert (" << curTime << "): Unable to open log file!\n"; +# endif +# ifdef PM_DEBUG_OUTPUT_DEBUG + debug.m_Debug.Append(String("Alert (%s): Unable to open log file!", curTime)); +# endif + } + else + { + flog << output << '\n'; + flog.close(); + } +# endif + } +} + +#else + +// Empty function if debugging isn't wanted +void PokeMod::Log(const PokeMod::String &msg, int level) +{ + return; +} + +#endif -- cgit