FEI Version of the Day
fei_LogManager.cpp
00001 /*--------------------------------------------------------------------*/
00002 /*    Copyright 2005 Sandia Corporation.                              */
00003 /*    Under the terms of Contract DE-AC04-94AL85000, there is a       */
00004 /*    non-exclusive license for use of this work by or on behalf      */
00005 /*    of the U.S. Government.  Export of this program may require     */
00006 /*    a license from the United States Government.                    */
00007 /*--------------------------------------------------------------------*/
00008 
00009 #include <fei_utils.hpp>
00010 #include <fei_LogManager.hpp>
00011 #include <fei_Logger.hpp>
00012 #include <fei_LogFile.hpp>
00013 
00014 fei::LogManager::LogManager()
00015  : output_level_(NONE),
00016    output_path_("./")
00017 {
00018 }
00019 
00020 fei::LogManager::~LogManager()
00021 {
00022 }
00023 
00024 fei::LogManager& fei::LogManager::getLogManager()
00025 {
00026   static fei::LogManager log_manager;
00027   return(log_manager);
00028 }
00029 
00030 fei::OutputLevel fei::LogManager::getOutputLevel()
00031 {
00032   return(output_level_);
00033 }
00034 
00035 void fei::LogManager::setOutputLevel(fei::OutputLevel olevel)
00036 {
00037   if (output_level_ == olevel) {
00038     return;
00039   }
00040 
00041   bool no_existing_output_stream = output_level_ < fei::BRIEF_LOGS;
00042 
00043   output_level_ = olevel;
00044 
00045   bool need_output_stream = output_level_ >= fei::BRIEF_LOGS;
00046 
00047   if (need_output_stream && no_existing_output_stream) {
00048     fei::LogFile::getLogFile().openOutputStream(output_path_.c_str(),
00049                                                   numProcs_, localProc_);
00050   }
00051 }
00052 
00053 void fei::LogManager::setOutputLevel(const char* olevel)
00054 {
00055   setOutputLevel(fei::utils::string_to_output_level(olevel));
00056 }
00057 
00058 void fei::LogManager::setOutputPath(const std::string& opath)
00059 {
00060   output_path_ = opath;
00061 }
00062 
00063 const std::string& fei::LogManager::getOutputPath()
00064 {
00065   return(output_path_);
00066 }
00067 
00068 void fei::LogManager::setNumProcs(int nprocs, int localproc)
00069 {
00070   numProcs_ = nprocs;
00071   localProc_ = localproc;
00072 }
00073 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends