# OgreLog.h

Go to the documentation of this file.

    00001 /*
    00002 -----------------------------------------------------------------------------
    00003 This source file is part of OGRE
    00004     (Object-oriented Graphics Rendering Engine)
    00005 For the latest info, see http://www.ogre3d.org/
    00006
    00007 Copyright (c) 2000-2006 Torus Knot Software Ltd
    00008 Also see acknowledgements in Readme.html
    00009
    00010 This program is free software; you can redistribute it and/or modify it under
    00011 the terms of the GNU Lesser General Public License as published by the Free Software
    00012 Foundation; either version 2 of the License, or (at your option) any later
    00013 version.
    00014
    00015 This program is distributed in the hope that it will be useful, but WITHOUT
    00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    00018
    00019 You should have received a copy of the GNU Lesser General Public License along with
    00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
    00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
    00022 http://www.gnu.org/copyleft/lesser.txt.
    00023
    00024 You may alternatively use this source under the terms of a specific version of
    00025 the OGRE Unrestricted License provided you have obtained such a license from
    00026 Torus Knot Software Ltd.
    00027 -----------------------------------------------------------------------------
    00028 */
    00029
    00030 #ifndef __Log_H__
    00031 #define __Log_H__
    00032
    00033 #include "OgrePrerequisites.h"
    00034
    00035 namespace Ogre {
    00036
    00037     // LogMessageLevel + LoggingLevel > OGRE_LOG_THRESHOLD = message logged
    00038     #define OGRE_LOG_THRESHOLD 4
    00039
    00042     enum LoggingLevel
    00043     {
    00044         LL_LOW = 1,
    00045         LL_NORMAL = 2,
    00046         LL_BOREME = 3
    00047     };
    00048
    00051     enum LogMessageLevel
    00052     {
    00053         LML_TRIVIAL = 1,
    00054         LML_NORMAL = 2,
    00055         LML_CRITICAL = 3
    00056     };
    00057
    00059     class LogListener
    00060     {
    00061     public:
    00062         virtual ~LogListener() {};
    00063
    00076         virtual void messageLogged( const String& message, LogMessageLevel lml, bool maskDebug, const String &logName ) = 0;
    00077     };
    00078
    00085     class _OgreExport Log
    00086     {
    00087     protected:
    00088         std::ofstream   mfpLog;
    00089         LoggingLevel    mLogLevel;
    00090         bool            mDebugOut;
    00091         bool            mSuppressFile;
    00092         String          mLogName;
    00093
    00094         typedef std::vector<LogListener*> mtLogListener;
    00095         mtLogListener mListeners;
    00096
    00097     public:
    00098         OGRE_AUTO_MUTEX // public to allow external locking
    00103         Log( const String& name, bool debugOutput = true, bool suppressFileOutput = false);
    00104
    00109         ~Log();
    00110
    00112         const String& getName() const { return mLogName; }
    00114         bool isDebugOutputEnabled() const { return mDebugOut; }
    00116         bool isFileOutputSuppressed() const { return mSuppressFile; }
    00117
    00121         void logMessage( const String& message, LogMessageLevel lml = LML_NORMAL, bool maskDebug = false );
    00122
    00127         void setDebugOutputEnabled(bool debugOutput);
    00132         void setLogDetail(LoggingLevel ll);
    00135         LoggingLevel getLogDetail() const { return mLogLevel; }
    00142         void addListener(LogListener* listener);
    00143
    00150         void removeListener(LogListener* listener);
    00151     };
    00152 }
    00153
    00154 #endif

Copyright © 2000-2005 by The OGRE Team
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sat May 10 16:24:59 2008