Logklasse erstellen



  • Was haltet ihr davon eine Log-Klasse so zu erstellen, anstelle von einem Define, das in der Release den Code verschwinden lässt?

    class Logger
    {
    public:
      Logger( const char* fname ) : out( fname )
      {
      }
    
    #ifdef DEBUG
      Logger& operator<< (const std::string& text)
      {
         out << text;
         return *this;
      }
    #else
      Logger& operator<< (const std::string&)
      {
         return *this;
      }
    #endif
    
    private:
      std::ofstream out;
    };
    

    Der Compiler dürfte die leere Funktion ja wegoptimieren.

    Damit müsste man nicht immer diese umständlichen "LOGBLA( "Ein String" );"-Makros benutzen, sondern könnte ganz natürliches C++ verwenden.


Anmelden zum Antworten