X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FLog.hh;fp=src%2FMoof%2FLog.hh;h=d3e4009c4a5a43f59393a8302922e9995f12bea0;hp=0000000000000000000000000000000000000000;hb=5fa5f117f28922a7e539a432367960c1a61f837d;hpb=a5f0d391406a68275b41448fc3f49e8d8396c497 diff --git a/src/Moof/Log.hh b/src/Moof/Log.hh new file mode 100644 index 0000000..d3e4009 --- /dev/null +++ b/src/Moof/Log.hh @@ -0,0 +1,119 @@ + +/******************************************************************************* + + Copyright (c) 2009, Charles McGarvey + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*******************************************************************************/ + +#ifndef _MOOF_LOG_H_ +#define _MOOF_LOG_H_ + +/** + * @file log.h + * Functions related to logging the process. + * The logging functions are logError(), logWarning(), logInfo(), and + * logDebug(), listed from most critical to least critical. + */ + +#include // exit +#include // errno +#include // strerror + + +namespace Mf { + + +/** + * Macro which tests an assertion and issues an logError() and exits if false. + * This differs from the standard assert() in that this is a runtime assertion + * test and will always be compiled in. + * @param X test to perform + */ + +#define ASSERT(X) if (!(X)) logError("false assertion at %s:%d, " #X \ + " (errno: %d, %s)", __FILE__, __LINE__, errno, strerror(errno)), exit(1) + + +/** + * Possible values used for setting the log level using LogLevel(). Log + * messages of lesser importance than the level specified are ignored. + * @see LogLevel() + */ + +typedef enum { + NONE = -1, ///< Disable all logging. + ERROR = 1, ///< Log only errors. + WARNING = 2, ///< Log warnings and errors. + INFO = 3, ///< Log info, warnings, errors. + DEBUGGING = 4 ///< Log all messages. +} LogLevel; + + +/** + * Set and/or get the level of logs which will be logged. If not called, + * defaults to WARNING + * @param level LOG_LEVEL_* constant or 0 for no change. + * @return The currently set log level. + */ + +LogLevel setLogLevel(LogLevel level); + + +/** + * Log an error. + * @param fmt Log format string. + * @param ... Extra format arguments. + */ + +void logError(const char* fmt, ...); + +/** + * Log a warning. + * @param fmt Log format string. + * @param ... Extra format arguments. + */ + +void logWarning(const char* fmt, ...); + +/** + * Log a message. + * @param fmt Log format string. + * @param ... Extra format arguments. + */ + +void logInfo(const char* fmt, ...); + +/** + * Log a debug message. + * @param fmt Log format string. + * @param ... Extra format arguments. + */ + +void logDebug(const char* fmt, ...); + + +} // namespace Mf + +#endif // _MOOF_LOG_H_ +