DefaultLogger.h 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include "Logger.h"
  2. #include <vector>
  3. namespace Assimp
  4. {
  5. // ---------------------------------------------------------------------------
  6. class IOStream;
  7. struct LogStreamInfo;
  8. // ---------------------------------------------------------------------------
  9. /** @class DefaultLogger
  10. * @brief Default logging implementation. The logger writes into a file.
  11. * The name can be set by creating the logger. If no filename was specified
  12. * the logger will use the standard out and error streams.
  13. */
  14. class DefaultLogger :
  15. public Logger
  16. {
  17. public:
  18. /** @brief Creates the only logging instance
  19. * @param name Name for logfile
  20. * @param severity Log severity, VERBOSE will activate debug messages
  21. */
  22. static Logger *create(const std::string &name, LogSeverity severity);
  23. /** @brief Getter for singleton instance
  24. * @return Only instance
  25. */
  26. static Logger *get();
  27. /** @brief Will kill the singleton instance */
  28. static void kill();
  29. /** @brief Logs debug infos, only been written when severity level VERBOSE is set */
  30. void debug(const std::string &message);
  31. /** @brief Logs an info message */
  32. void info(const std::string &message);
  33. /** @brief Logs a warning message */
  34. void warn(const std::string &message);
  35. /** @brief Logs an error message */
  36. void error(const std::string &message);
  37. /** @drief Severity setter */
  38. void setLogSeverity(LogSeverity log_severity);
  39. /** @brief Detach a still attached stream from logger */
  40. void attachStream(LogStream *pStream, unsigned int severity);
  41. /** @brief Detach a still attached stream from logger */
  42. void detatchStream(LogStream *pStream, unsigned int severity);
  43. private:
  44. /** @brief Constructor
  45. * @param name Name for logfile, keep this empty to use std::cout and std::cerr
  46. * @param severity Severity of logger
  47. */
  48. DefaultLogger(const std::string &name, LogSeverity severity);
  49. /** @brief Destructor */
  50. ~DefaultLogger();
  51. /** @brief Writes message into a file */
  52. void writeToStreams(const std::string &message, ErrorSeverity ErrorSev );
  53. private:
  54. // Aliases for stream container
  55. typedef std::vector<LogStreamInfo*> StreamArray;
  56. typedef std::vector<LogStreamInfo*>::iterator StreamIt;
  57. typedef std::vector<LogStreamInfo*>::const_iterator ConstStreamIt;
  58. //! only logging instance
  59. static DefaultLogger *m_pLogger;
  60. //! Logger severity
  61. LogSeverity m_Severity;
  62. //! Attached streams
  63. StreamArray m_StreamArray;
  64. //! Array with default streams
  65. std::vector<LogStream*> m_Streams;
  66. };
  67. // ---------------------------------------------------------------------------
  68. } // Namespace Assimp