90 open(filename, clobber);
182 va_start(vl, msgFormat);
183 std::vsprintf(buffer, msgFormat, vl);
187 append(std::string(buffer)+
"\n");
209 #pragma omp critical(GLog_insert_logger)
228 std::ifstream file(filename.
url().c_str(), std::ios::in);
233 while(std::getline(file,line)) {
234 #pragma omp critical(GLog_insert_logger)
243 log.
open(filename,
false);
298 std::ostringstream oss;
321 std::ostringstream oss;
367 std::ostringstream oss;
390 std::ostringstream oss;
413 std::ostringstream oss;
480 #pragma omp critical(GLog_flush)
514 #pragma omp critical(GLog_open)
519 m_file = std::fopen(filename.
url().c_str(),
"w");
522 m_file = std::fopen(filename.
url().c_str(),
"a");
541 #pragma omp critical(GLog_open)
623 #pragma omp critical(GLog_copy_members)
668 #pragma omp critical(GLog_flush)
682 std::size_t pos =
m_buffer.find_first_of(
"\n", 0);
683 if (pos == std::string::npos) {
689 line =
m_buffer.substr(0, pos) +
"\n";
696 std::fprintf(
m_file,
"%s", line.c_str());
737 text =
"| " + arg +
" |";
738 frame = (level == 1) ?
"+" +
gammalib::fill(
"=", text.length()-2) +
"+"
742 text =
"=== " + arg +
" ===";
749 if (frame.length() > 0) {
753 if (text.length() > 0) {
757 if (frame.length() > 0) {
784 prefix.append(
" "+
m_name);
788 if (prefix.length() > 0){
811 #pragma omp critical(GLog_append)
814 std::string arg = string;
828 std::size_t pos = arg.find_first_of(
"\n",0);
831 while (pos != std::string::npos && pos < arg.size()-1) {
834 std::string pre =
prefix();
835 arg.insert(pos+1, pre);
838 pos = arg.find_first_of(
"\n",pos+1+pre.size());
const GFilename & filename(void) const
Return log filename.
void open(const GFilename &filename, const bool &clobber=false)
Open log file.
GLog & operator=(const GLog &log)
Assignment operator.
void free_members(void)
Delete class members.
std::string strdate(void)
Return current date.
int m_indent
Indentation of text.
long int m_written_size
Number of char's written though this logger.
int m_max_length
Maximum buffer length.
Information logger interface definition.
std::string m_buffer
Output string buffer.
void header(const std::string &arg, int level)
Write string as header into logger.
void copy_members(const GLog &log)
Copy class members.
GVector log(const GVector &vector)
Computes natural logarithm of vector elements.
void close(void)
Close log file.
void flush(const bool &force=false)
Flush string buffer into log file.
long int size(void) const
Return the number of characters in the log file.
void operator()(const char *msgFormat,...)
Message logging operator.
void append(const std::string &string)
Append string to the buffer.
bool m_linestart
Signals that buffer is at line start.
virtual ~GLog(void)
Destructor.
GLog & operator<<(GLog &log)
Insert logger into logger.
Information logger class definition.
std::string url(void) const
Return Uniform Resource Locator (URL)
void clear(void)
Clear file name.
void init_members(void)
Initialise class members.
std::string m_name
Name for prefix.
FILE * m_file
Log file pointer.
const std::string & buffer(void) const
Return logger buffer.
bool m_use_date
Dump date in prefix.
GChatter m_chatter
Chattiness for print() method.
bool m_stderr
Dump in standard error.
std::string fill(const std::string &s, const int &n)
Fill string with n strings of same type.
std::string prefix(void) const
Return prefix.
bool m_stdout
Dump in standard output.
GFilename m_filename
Log file name.
GLog(void)
Void constructor.
void clear(void)
Clear object.
std::string str(const unsigned short int &value)
Convert unsigned short integer value into string.