/** * @file Log.h * * Created on: 16.01.2017 * @author Piotr Dergun */ #ifndef LOG_H_ #define LOG_H_ #include "common.h" enum LOG_COLOR { BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE }; class Log { /** nr linii na którym ma byc domyślnie zapisany komunikat */ int lineNumber; /** kolor tekstu */ LOG_COLOR color; /** znaki specjalne pomiędzy nazwą zdarzenia, a komunikatem; zwykle tabulatory */ string delimiter; /** wskaźnik na element z nazwą - hostname etc. */ string *objectName; /** systemowy mutex blokujący pisanie przez inne wątki */ pthread_mutex_t *writeMutex; /** domyślny czas delay'a */ int delayVal; /** numer linii, od której będą zaczynać się wieloliniowe komunikaty (do samego dołu) */ int firstLine; /** aktualny numer linii komunikatu wielolinijkowego */ int currentLine; public: Log(); /** * wypisuje na ekran komunikat obiektu * @param msg treść komunikatu * @param force wymuszenie wyświetlenia jeżeli delay obiektu=0 * @param customLine określony nr linii, na którym ma być wyświetlony komunikat zamiast domyślnej linii */ void print(string msg, bool force=false, int customLine = -1); /** * wypisuje na ekran komunikat wielolinijkowy (linia po linii, aż do końca ekranu -2 linie) * @param msg treść komunikatu * @param force wymuszenie wyświetlania jeżeli delay obiektu=0 */ void printLine(string msg, bool force=false); /** * tworzy efektowny progressbar wraz z wartością procentową na końcu linii * @param lineNumber numer linii na którym ma być wyświetlony progress bar * @param offset przesunięcie progressbaru w stosunku do nazwy * @param msg nazwa progressbara * @param percent procent określonego parametru, liczba wymierna z zakresu [0,1] */ void printProgressBar(int lineNumber, int offset, string msg, float percent); /** * zwraca mutex (Singleton) do blokowania pisania po konsoli */ static pthread_mutex_t * getMutex(); /** * opóźnia wykonanie się poleceń o czas z delayVal lub customowy * czas pomiędzy 0-9 uruchamia systemowe sleep() * natomiast powyżej 9 funkcję usleep * @param optional opcjonalny czas (1-9 sekundy, >=10 mikrosekundy) */ void delay(int optional=-1); /* mutuatory */ LOG_COLOR getColor() const; void setColor(LOG_COLOR color); const string& getDelimiter() const; void setDelimiter(const string& delimiter); int getLineNumber() const; void setLineNumber(int lineNumber); void setLogParams(int lineNumber, LOG_COLOR color, string delimiter); int getDelay() const; void setDelay(int delay); string* getObjectName() const; void setObjectName(string* objectName); int getFirstLine() const; void setFirstLine(int firstLine); }; #endif /* LOG_H_ */