Commit 36116369 authored by Tomáš Jakubec's avatar Tomáš Jakubec
Browse files

change of the printing system

parent fb9deba6
Loading
Loading
Loading
Loading
Loading

src/GTMesh/Debug/CSVLogger.h

deleted100644 → 0
+0 −149
Original line number Original line Diff line number Diff line
#ifndef CSVLOGGER_H
#define CSVLOGGER_H
#include <string>
#include <fstream>
#include "VariableExport.h"
/**
 * @brief The HtmlLogger class
 * has opened file to write log
 * if it opens existing file overwrites it.
 * in destructor it closes the file.
 */
class CSVLogger {

    std::string logFileName = "";
    std::ofstream* logFile;
    int groupIndex = 0;

    void writeHeadder() {
        (*logFile) << "Group Index;Line;File;Expression;Value\n";
    }
public:
    CSVLogger(){logFile = nullptr;}

    /**
     * @brief HtmlLogger
     * opens specified file for writing
     * @param fileName
     *
     */
    CSVLogger(const char* fileName)
        :CSVLogger(){
        logFileName = fileName;
    }

    ~CSVLogger(){
        destroy();
    }

    /**
     * @brief Create
     * opens specified file and writes headder and script in html
     * @param fileName
     */
    void create(const char* fileName){
        if ( logFile ){
            logFile->close();
            delete logFile;
        }
        logFile = new std::ofstream( fileName );


        writeHeadder();
    }

    void destroy(){
        if( logFile ){
            logFile->close();
            delete logFile;
        }
    }



    template<typename VAR_NAME, typename VAR, typename ... REST>
    void writeVar(VAR_NAME name, VAR value, REST ... rest){

        // create file if not logFile is nullptr
        if ( !logFile ) create(logFileName.c_str());

        (*logFile) << name << ", " << value;
        logFile->flush();
        writeVar(rest...);
    }


    template<typename VAR_NAME, typename VAR>
    void writeVar(VAR_NAME name, VAR value){

        // create file if not logFile is nullptr
        if (!logFile) create(logFileName.c_str());

        (*logFile) << name << ", " << value;
        logFile->flush();
    }


    template<typename VAR_NAME, typename VAR, typename ... REST>
    void writeVar(int line, std::string& cppFile, VAR_NAME name, VAR value, REST ... rest){

        // create file if not logFile is nullptr
        if (!logFile) create(logFileName.c_str());

        (*logFile)  <<  groupIndex << ';' << line << ";\"" << cppFile << "\";\"" << name << "\";";
        VariableExport<>::exportVariable( *logFile, value );
        (*logFile) << "\n";
        writeVar(line, cppFile, rest...);
    }


    template<typename VAR_NAME, typename VAR>
    void writeVar( int line, std::string& cppFile, VAR_NAME name, VAR value){

        // create file if not logFile is nullptr
        if (!logFile) create(logFileName.c_str());

        (*logFile)  <<  groupIndex << ';' << line << ";\"" << cppFile << "\";\"" << name << "\";";
        VariableExport<>::exportVariable(*logFile,value);
        (*logFile) << "\n";

        groupIndex++;
    }


    template<typename VAR_NAME, typename VAR, typename ... REST>
    void writeVar(int line, const char* cppFile, VAR_NAME name, VAR value, REST ... rest){

        std::string file;
        int i = 0;
        while(cppFile[i] != '\0'){
            if (cppFile[i] == '\\'){
                file += "\\\\";
            } else {
                file += cppFile[i];
            }
            i++;
        }
        writeVar(line, file, name, value,  rest...);
    }


    template<typename VAR_NAME, typename VAR>
    void writeVar(int line, const char* cppFile, VAR_NAME name, VAR value){
        std::string file;
        int i = 0;
        while(cppFile[i] != '\0'){
            if (cppFile[i] == '\\'){
                file += "\\\\";
            } else {
                file += cppFile[i];
            }
            i++;
        }
        writeVar(line, file, name, value);
    }

};


#endif // CSVLOGGER_H
+18 −56
Original line number Original line Diff line number Diff line
@@ -3,13 +3,16 @@
#include "VariableExport.h"
#include "VariableExport.h"


#ifdef _WIN32
#ifdef _WIN32
#ifndef NOMINMAX
#define NOMINMAX
#define NOMINMAX
#endif
#include <windows.h>
#include <windows.h>
#endif
#endif


/**
/**
 * @brief The ConsoleLogger class
 * @brief The ConsoleLogger class
 */
 */
template <VARIABLE_EXPORT_METHOD method = VARIABLE_EXPORT_METHOD::VARIABLE_EXPORT_METHOD_OSTREAM>
class ConsoleLogger {
class ConsoleLogger {
    bool mColoredOutput = true; //!< If true then the output the variable names and their values are highlighted.
    bool mColoredOutput = true; //!< If true then the output the variable names and their values are highlighted.
    bool mOnlyFilename = false; //!< If true then the filename is exported without its path.
    bool mOnlyFilename = false; //!< If true then the filename is exported without its path.
@@ -87,7 +90,7 @@ public:
        printHeader(line, funcName, sourceFile, prefix);
        printHeader(line, funcName, sourceFile, prefix);
        std::cerr << "==> ";
        std::cerr << "==> ";
        insertMessageColor();
        insertMessageColor();
        VariableExport<>::exportVariable(std::cerr, message);
        VariableExport::exportVariable(std::cerr, message);
        resetColor();
        resetColor();
        std::cerr << " <==" << std::endl;
        std::cerr << " <==" << std::endl;


@@ -117,7 +120,7 @@ private:
        resetColor();
        resetColor();
        std::cerr << " ]] ==> " << std::flush;
        std::cerr << " ]] ==> " << std::flush;
        insertValueColor();
        insertValueColor();
        VariableExport<>::exportVariable(std::cerr, value);
        VariableExport::exportVariable(std::cerr, value);
        resetColor();
        resetColor();
        std::cerr << "\n";
        std::cerr << "\n";


@@ -189,80 +192,39 @@ private:
        }
        }
        return res;
        return res;
    }
    }
};




template <>
class ConsoleLogger<VARIABLE_EXPORT_METHOD::VARIABLE_EXPORT_METHOD_STDIO> {


public:
public:


    template<typename MSGTYPE, typename... MSGTYPES>
    template<typename MSGTYPE, typename... MSGTYPES>
    static void writeMessage(const char* prefix, int line, const char* sourceFile, const MSGTYPE& message, const MSGTYPES&... rest) {
    static void writeMessageC(const char* prefix, int line, const char* funcName, const char* sourceFile, const MSGTYPE& message, const MSGTYPES&... rest) {
        writeMessage(prefix, line, sourceFile, message);
        writeMessageC(prefix, funcName, line, sourceFile, message);
        writeMessage(prefix, line, sourceFile, rest...);
        writeMessageC(prefix, funcName, line, sourceFile, rest...);
    }
    }




    template<typename MSGTYPE>
    template<typename MSGTYPE>
    static void writeMessage(const char* prefix, int line, const char* sourceFile, const MSGTYPE& message) {
    static void writeMessageC(const char* prefix, int line, const char* funcName, const char* sourceFile, const MSGTYPE& message) {

        printf("%s %s: %i <%s> ==> ", prefix, sourceFile, line, funcName);
        printf("%s %s << %i >> ==> ",
               prefix,
               sourceFile,
               line);


        VariableExport<VARIABLE_EXPORT_METHOD::VARIABLE_EXPORT_METHOD_STDIO>::exportVariable(message);
        VariableExport::exportVariable(message);


        printf(" <==\n");
        printf(" <==\n");
    }
    }


    template<typename VAR_NAME, typename VAR, typename ... REST>
    static void writeVar(VAR_NAME name, VAR value, REST ... rest){

        writeVar(name, value);
        writeVar(rest...);
    }


    template<typename VAR_NAME, typename VAR>
    static void writeVar(VAR_NAME name, VAR value){

        std::cerr << "variable " << name << " has value: " << value;
    }





    template<typename VAR_NAME, typename VAR, typename ... REST>
    template<typename VAR_NAME, typename VAR, typename ... REST>
    static void writeVar(int line, const char* cppFile, const VAR_NAME& name,const VAR& value,const REST& ... rest){
    static void writeVarC(int line, const char* funcName, const char* cppFile, const VAR_NAME& name,const VAR& value,const REST& ... rest){

        writeVar(line, cppFile, name, value);
        writeVar(line, cppFile,  rest...);
    }

    template<typename VAR>
    static void writeVar(int line, const char* cppFile, const char* name,const VAR& value){


        printf("== %s << %i >> [[ %s ]] ==> ",
        writeVarC(line, funcName, cppFile, name, value);
               cppFile,
        writeVarC(line, funcName, cppFile, rest...);
               line,
               name);

        VariableExport<VARIABLE_EXPORT_METHOD::VARIABLE_EXPORT_METHOD_STDIO>::exportVariable(value);
        printf("\n");
    }
    }


    template<typename VAR>
    template<typename VAR>
    static void writeVar(int line, const char* cppFile, const char* name,const std::initializer_list<VAR>& value){
    static void writeVarC(int line, const char* funcName, const char* cppFile, const char* name,const VAR& value){

        printf("== %s: %i <%s> [[ %s ]] ==> ", cppFile, line, funcName, name);
        printf("== %s << %i >> [[ %s ]] ==> ",
               cppFile,
               line,
               name);


        VariableExport<VARIABLE_EXPORT_METHOD::VARIABLE_EXPORT_METHOD_STDIO>::exportVariable(value);
        VariableExport::exportVariable(value);
        printf("\n");
        printf("\n");
    }
    }


+4 −7
Original line number Original line Diff line number Diff line
@@ -5,7 +5,6 @@
#include "../Macros/MacroForEach.h"
#include "../Macros/MacroForEach.h"
#include <iostream>
#include <iostream>
#include "HTMLLogger.h"
#include "HTMLLogger.h"
#include "CSVLogger.h"
#include "JSONLogger.h"
#include "JSONLogger.h"
#include "ConsoleLogger.h"
#include "ConsoleLogger.h"
#include "../Singleton/Singleton.h"
#include "../Singleton/Singleton.h"
@@ -18,14 +17,12 @@ namespace dbg {
    struct DBGStatics {
    struct DBGStatics {
        HtmlLogger HDBGLog = HtmlLogger("DBG.html");
        HtmlLogger HDBGLog = HtmlLogger("DBG.html");


        CSVLogger CSVDBGLog = CSVLogger("DBG.csv");

        JSONLogger JSONDBGLog = JSONLogger("DBG.json");
        JSONLogger JSONDBGLog = JSONLogger("DBG.json");


    };
    };


    ConsoleLogger<>& getDebugConsoleLogger() {
    inline ConsoleLogger& getDebugConsoleLogger() {
        static ConsoleLogger<> consoleLogger = ConsoleLogger<>();
        static ConsoleLogger consoleLogger = ConsoleLogger();
        return consoleLogger;
        return consoleLogger;
    }
    }
}
}
@@ -36,7 +33,7 @@ namespace dbg {
#define DBGVAR(...) dbg::getDebugConsoleLogger().writeVariable(__LINE__, __func__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__))
#define DBGVAR(...) dbg::getDebugConsoleLogger().writeVariable(__LINE__, __func__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__))
#define DBGVARCOND(condition, ...) if(condition) DBGVAR(__VA_ARGS__)
#define DBGVARCOND(condition, ...) if(condition) DBGVAR(__VA_ARGS__)


#define DBGVAR_STDIO(...) ConsoleLogger<VARIABLE_EXPORT_METHOD_STDIO>::writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__))
#define DBGVAR_STDIO(...) ConsoleLogger::writeVarC(__LINE__, __FILE__, __func__, FOR_EACH(STRVAR, __VA_ARGS__))
#define DBGVARCOND_STDIO(condition, ...) if(condition) DBGVAR_STDIO(__VA_ARGS__)
#define DBGVARCOND_STDIO(condition, ...) if(condition) DBGVAR_STDIO(__VA_ARGS__)


#define DBGMSG(...) dbg::getDebugConsoleLogger().writeMessage("++", __LINE__, __func__, __FILE__, __VA_ARGS__)
#define DBGMSG(...) dbg::getDebugConsoleLogger().writeMessage("++", __LINE__, __func__, __FILE__, __VA_ARGS__)
@@ -62,7 +59,7 @@ exit(1);}




#define DBGCHECK dbg::getDebugConsoleLogger().writeMessage("--", __LINE__, __func__, __FILE__, "check line")
#define DBGCHECK dbg::getDebugConsoleLogger().writeMessage("--", __LINE__, __func__, __FILE__, "check line")

#define DBGCHECK_STDIO ConsoleLogger::writeMessageC("--", __LINE__, __func__, __FILE__, "check line")


#else
#else


+2 −2
Original line number Original line Diff line number Diff line
@@ -93,7 +93,7 @@ public:
        if (!logFile) create(logFileName.c_str());
        if (!logFile) create(logFileName.c_str());


        (*logFile)  << "[" << groupIndex << ", " << line << ", '" << cppFile << "', '" << name << "', ";
        (*logFile)  << "[" << groupIndex << ", " << line << ", '" << cppFile << "', '" << name << "', ";
        VariableExport<>::exportVariable(*logFile,value);
        VariableExport::exportVariable(*logFile,value);
        (*logFile) << "],\n";
        (*logFile) << "],\n";
        writeVar(line, cppFile, rest...);
        writeVar(line, cppFile, rest...);
    }
    }
@@ -106,7 +106,7 @@ public:
        if (!logFile) create(logFileName.c_str());
        if (!logFile) create(logFileName.c_str());


        (*logFile)  << "[" << groupIndex << ", " << line << ", '" << cppFile << "', '" << name << "', ";
        (*logFile)  << "[" << groupIndex << ", " << line << ", '" << cppFile << "', '" << name << "', ";
        VariableExport<>::exportVariable(*logFile,value);
        VariableExport::exportVariable(*logFile,value);
        (*logFile) << "],\n";
        (*logFile) << "],\n";
        groupIndex++;
        groupIndex++;


+7 −8
Original line number Original line Diff line number Diff line
@@ -17,7 +17,6 @@ class JSONLogger {
    std::ofstream* logFile;
    std::ofstream* logFile;
    int groupIndex = 0;
    int groupIndex = 0;
    bool firstWrite = true;
    bool firstWrite = true;

public:
public:
    JSONLogger(){logFile = nullptr;}
    JSONLogger(){logFile = nullptr;}


@@ -85,9 +84,9 @@ public:
            firstWrite = false;
            firstWrite = false;
        }
        }


        (*logFile) << "\t{\n\t\t\"expr\" : \""<< std::quoted( name ) <<
        (*logFile) << "\t{\n\t\t\"expr\" : "<< std::quoted( name ) <<
                      "\",\n\t\t\"data\" : " ;
                      ",\n\t\t\"data\" : " ;
        VariableExport<>::exportVariable(*logFile, value);
        VariableExport::exportVariable(*logFile, value);
        (*logFile) << "\n}";
        (*logFile) << "\n}";




@@ -109,9 +108,9 @@ public:
                      "\n\t\t\"gInd\" : " << groupIndex << "," <<
                      "\n\t\t\"gInd\" : " << groupIndex << "," <<
                      "\n\t\t\"file\" : \"" << cppFile << "\"," <<
                      "\n\t\t\"file\" : \"" << cppFile << "\"," <<
                      "\n\t\t\"line\" : " << line << "," <<
                      "\n\t\t\"line\" : " << line << "," <<
                      "\n\t\t\"expr\" : \""<< std::quoted( name ) << "\"," <<
                      "\n\t\t\"expr\" : " << std::quoted( name ) << "," <<
                      "\n\t\t\"data\" : ";
                      "\n\t\t\"data\" : ";
        VariableExport<>::exportVariable(*logFile, value);
        VariableExport::exportVariable(*logFile, value);
        (*logFile) << "\n\t}";
        (*logFile) << "\n\t}";


        writeVar(line, cppFile, rest...);
        writeVar(line, cppFile, rest...);
@@ -133,9 +132,9 @@ public:
                      "\n\t\t\"gInd\" : " << groupIndex << "," <<
                      "\n\t\t\"gInd\" : " << groupIndex << "," <<
                      "\n\t\t\"file\" : \"" << cppFile << "\"," <<
                      "\n\t\t\"file\" : \"" << cppFile << "\"," <<
                      "\n\t\t\"line\" : " << line << "," <<
                      "\n\t\t\"line\" : " << line << "," <<
                      "\n\t\t\"expr\" : \""<< std::quoted( name ) << "\"," <<
                      "\n\t\t\"expr\" : " << std::quoted( name ) << "," <<
                      "\n\t\t\"data\" : ";
                      "\n\t\t\"data\" : ";
        VariableExport<>::exportVariable(*logFile, value);
        VariableExport::exportVariable(*logFile, value);


        (*logFile) << "\n\t}";
        (*logFile) << "\n\t}";


Loading