|
/**
|
|
* @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_ */
|