# Visualization Library

A lightweight C++ OpenGL middleware for 2D/3D graphics

[Home] [Tutorials] [All Classes] [Grouped Classes]

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# D:/VL/BuildSystem/VL_DISTRO/Visualization_Library_SDK/src/vlCore/Log.hpp

Go to the documentation of this file.

    00001 /**************************************************************************************/
    00002 /*                                                                                    */
    00003 /*  Visualization Library                                                             */
    00004 /*  http://www.visualizationlibrary.com                                               */
    00005 /*                                                                                    */
    00006 /*  Copyright (c) 2005-2010, Michele Bosi                                             */
    00007 /*  All rights reserved.                                                              */
    00008 /*                                                                                    */
    00009 /*  Redistribution and use in source and binary forms, with or without modification,  */
    00010 /*  are permitted provided that the following conditions are met:                     */
    00011 /*                                                                                    */
    00012 /*  - Redistributions of source code must retain the above copyright notice, this     */
    00013 /*  list of conditions and the following disclaimer.                                  */
    00014 /*                                                                                    */
    00015 /*  - Redistributions in binary form must reproduce the above copyright notice, this  */
    00016 /*  list of conditions and the following disclaimer in the documentation and/or       */
    00017 /*  other materials provided with the distribution.                                   */
    00018 /*                                                                                    */
    00019 /*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND   */
    00020 /*  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED     */
    00021 /*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE            */
    00022 /*  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR  */
    00023 /*  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    */
    00024 /*  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;      */
    00025 /*  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON    */
    00026 /*  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT           */
    00027 /*  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS     */
    00028 /*  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                      */
    00029 /*                                                                                    */
    00030 /**************************************************************************************/
    00031
    00032 #ifndef Log_INCLUDE_ONCE
    00033 #define Log_INCLUDE_ONCE
    00034
    00035 #include <vlCore/String.hpp>
    00036 #include <vlCore/IMutex.hpp>
    00037 #include <fstream>
    00038
    00039 namespace vl
    00040 {
    00041   //------------------------------------------------------------------------------
    00042   // Log
    00043   //-----------------------------------------------------------------------------
    00045   class VLCORE_EXPORT Log: public Object
    00046   {
    00047   protected:
    00048     typedef enum
    00049     {
    00050       LogBug,
    00051       LogError,
    00052       LogWarning,
    00053       LogNormal,
    00054       LogInfo,
    00055       LogDebug,
    00056     } ELogLevel;
    00057
    00058   public:
    00059     virtual const char* className() { return "vl::Log"; }
    00060
    00061     Log()
    00062     {
    00063       VL_DEBUG_SET_OBJECT_NAME()
    00064     }
    00065
    00066   protected:
    00067     virtual void printImplementation(ELogLevel level, const String& message) = 0;
    00068
    00069     // ---  static methods ---
    00070
    00071   public:
    00074     static void setLogMutex(IMutex* mutex) { mLogMutex = mutex; }
    00075
    00077     static IMutex* logMutex() { return mLogMutex; }
    00078
    00079     /* Logs the specified message.
    00080      * \note Log generated only if verbosity level != vl::VEL_VERBOSITY_SILENT */
    00081     static void print(const String& message);
    00082
    00086     static void info(const String& message);
    00087
    00091     static void debug(const String& message);
    00092
    00096     static void warning(const String& message);
    00097
    00101     static void error(const String& message);
    00102
    00106     static void bug(const String& message);
    00107
    00109     static void logSystemInfo();
    00110
    00111   private:
    00112     static IMutex* mLogMutex;
    00113   };
    00114
    00115   //-----------------------------------------------------------------------------
    00116   // Default logger
    00117   //-----------------------------------------------------------------------------
    00119   VLCORE_EXPORT void setDefLogger(Log* logger);
    00120
    00122   VLCORE_EXPORT Log* defLogger();
    00123
    00124   //-----------------------------------------------------------------------------
    00125   // StandardLog
    00126   //-----------------------------------------------------------------------------
    00128   class VLCORE_EXPORT StandardLog: public Log
    00129   {
    00130   public:
    00131     virtual const char* className() { return "vl::StandardLog"; }
    00132     void setLogFile(const String& file);
    00133     const String& logFile() const { return mLogFile; }
    00134
    00135   protected:
    00136     virtual void printImplementation(ELogLevel level, const String& message);
    00137     String mLogFile;
    00138     std::ofstream mFile;
    00139   };
    00140 }
    00141
    00142 #endif

Visualization Library v2011.05.1142 Reference Documentation
Copyright 2005-2011 Michele Bosi. All rights reserved.
Updated on Thu May 26 2011 22:51:21.
Permission is granted to use this page to write and publish articles regarding Visualization Library.