Commit 7c9f515a5b45cd4669551aab22bea57fed5ad780

Authored by Jürgen Knödlseder
1 parent 7018091c

Add GLog::written_size() and rename GLog::max_size() to GLog::buffer_size()

ChangeLog
... ... @@ -3,7 +3,7 @@
3 3 * Version 1.2.0 released
4 4 =========================
5 5  
6   - Add GLog::is_open() and GLog::is_empty() methods (#1837)
  6 + Add GLog is_open(), is_empty() and written_size() methods (#1837)
7 7 Fix invalid pointer problem in GLog copies (#1823)
8 8 Fix GSkyMap::publish() bug for empty sky maps (#1835)
9 9 Fix loss of application name and version (#1835)
... ...
... ... @@ -29,12 +29,14 @@ The following methods have been added:
29 29 - GApplication::log_header3()
30 30 - GLog::is_open()
31 31 - GLog::is_empty()
  32 +- GLog::written_size()
32 33  
33 34 The following methods have been removed:
34 35 - ...
35 36  
36 37 The following methods have been renamed:
37 38 - GModelSpectralPlawPhotonFlux::flux(), was GModelSpectralPlaw2::integral()
  39 +- GLog::buffer_size(), was GLog::max_size()
38 40  
39 41 The parameters for the following methods have been changed:
40 42 - GApplication::log_parameters() now has a mandatory GChatter argument
... ... @@ -78,6 +80,9 @@ a log file is actually empty (#1837).
78 80 The GLog::size() method now returns the actual size of the log file, including
79 81 the number of characters on disk.
80 82  
  83 +The GLog::max_size() method has been renamed to GLog::buffer_size since this
  84 +is more explicit (#1837).
  85 +
81 86  
82 87 5. Base module
83 88 --------------
... ...
include/GLog.hpp
... ... @@ -55,7 +55,7 @@
55 55 *
56 56 * The logger interface implements an internal character buffer that is
57 57 * flushed once a maximum size parameter is exceeded. The buffer limit can
58   - * be modified using the max_size() method; by default it is set to 8192
  58 + * be modified using the buffer_size() method; by default it is set to 8192
59 59 * characters. The logger allows prepending of the current date and the task
60 60 * name.
61 61 ***************************************************************************/
... ... @@ -85,6 +85,7 @@ public:
85 85 // Methods
86 86 void clear(void);
87 87 long int size(void) const;
  88 + long int written_size(void) const;
88 89 std::string classname(void) const;
89 90 bool is_open(void) const;
90 91 bool is_empty(void) const;
... ... @@ -96,7 +97,7 @@ public:
96 97 void cout(const bool& flag);
97 98 void cerr(const bool& flag);
98 99 void name(const std::string& name);
99   - void max_size(const int& size);
  100 + void buffer_size(const int& size);
100 101 void indent(const int& indent);
101 102 void chatter(const GChatter& chatter);
102 103 void header0(const std::string& arg);
... ... @@ -107,7 +108,7 @@ public:
107 108 const bool& cout(void) const;
108 109 const bool& cerr(void) const;
109 110 const std::string& name(void) const;
110   - const int& max_size(void) const;
  111 + const int& buffer_size(void) const;
111 112 const int& indent(void) const;
112 113 const GChatter& chatter(void) const;
113 114 const GFilename& filename(void) const;
... ... @@ -123,17 +124,18 @@ protected:
123 124 void append(std::string arg);
124 125  
125 126 // Protected data members
126   - int m_max_length; //!< Maximum buffer length
127   - int m_indent; //!< Indentation of text
128   - bool m_stdout; //!< Dump in standard output
129   - bool m_stderr; //!< Dump in standard error
130   - bool m_use_date; //!< Dump date in prefix
131   - bool m_linestart; //!< Signals that buffer is at line start
132   - FILE* m_file; //!< Log file pointer
133   - GFilename m_filename; //!< Log file name
134   - std::string m_name; //!< Name for prefix
135   - std::string m_buffer; //!< Output string buffer
136   - GChatter m_chatter; //!< Chattiness for print() method
  127 + int m_max_length; //!< Maximum buffer length
  128 + int m_indent; //!< Indentation of text
  129 + long int m_written_size; //!< Number of char's written though this logger
  130 + bool m_stdout; //!< Dump in standard output
  131 + bool m_stderr; //!< Dump in standard error
  132 + bool m_use_date; //!< Dump date in prefix
  133 + bool m_linestart; //!< Signals that buffer is at line start
  134 + FILE* m_file; //!< Log file pointer
  135 + GFilename m_filename; //!< Log file name
  136 + std::string m_name; //!< Name for prefix
  137 + std::string m_buffer; //!< Output string buffer
  138 + GChatter m_chatter; //!< Chattiness for print() method
137 139 };
138 140  
139 141  
... ... @@ -150,6 +152,18 @@ std::string GLog::classname(void) const
150 152  
151 153  
152 154 /***********************************************************************//**
  155 + * @brief Return number of characters written through this logger
  156 + *
  157 + * @return Number of characters written.
  158 + ***************************************************************************/
  159 +inline
  160 +long int GLog::written_size(void) const
  161 +{
  162 + return (m_written_size);
  163 +}
  164 +
  165 +
  166 +/***********************************************************************//**
153 167 * @brief Signal that log file is open
154 168 *
155 169 * @return True if log file is open, false otherwise.
... ... @@ -302,19 +316,15 @@ void GLog::name(const std::string&amp; name)
302 316  
303 317  
304 318 /***********************************************************************//**
305   - * @brief Set the maximum buffer size
306   - *
307   - * @param[in] size Maximum buffer size.
  319 + * @brief Set the buffer size
308 320 *
309   - * Set the maximum number of characters allowed in the internal buffer before
310   - * the buffer is flushed into the specified streams or file.
  321 + * @param[in] size Buffer size.
311 322 *
312   - * @todo No maximum buffer size checking is performed. This could be
313   - * implemented but is not really crucial since the physical buffer size can
314   - * indeed be larger than this maximum size.
  323 + * Set the number of characters allowed in the internal buffer before the
  324 + * buffer is flushed into the specified streams or file.
315 325 ***************************************************************************/
316 326 inline
317   -void GLog::max_size(const int& size)
  327 +void GLog::buffer_size(const int& size)
318 328 {
319 329 m_max_length = size;
320 330 return;
... ... @@ -421,15 +431,15 @@ const std::string&amp; GLog::name(void) const
421 431  
422 432  
423 433 /***********************************************************************//**
424   - * @brief Return the maximum buffer size
  434 + * @brief Return the buffer size
425 435 *
426   - * @return Maximum buffer size.
  436 + * @return Buffer size.
427 437 *
428   - * Returns the maximum number of characters allowed in the internal buffer
  438 + * Returns the number of characters that are allowed in the internal buffer
429 439 * before the buffer is flushed into the specified streams or file.
430 440 ***************************************************************************/
431 441 inline
432   -const int& GLog::max_size(void) const
  442 +const int& GLog::buffer_size(void) const
433 443 {
434 444 return m_max_length;
435 445 }
... ...
pyext/GLog.i
... ... @@ -46,6 +46,7 @@ public:
46 46 // Methods
47 47 void clear(void);
48 48 long int size(void) const;
  49 + long int written_size(void) const;
49 50 std::string classname(void) const;
50 51 bool is_open(void) const;
51 52 bool is_empty(void) const;
... ... @@ -57,7 +58,7 @@ public:
57 58 void cout(const bool& flag);
58 59 void cerr(const bool& flag);
59 60 void name(const std::string& name);
60   - void max_size(const int& size);
  61 + void buffer_size(const int& size);
61 62 void indent(const int& indent);
62 63 void chatter(const GChatter& chatter);
63 64 void header0(const std::string& arg);
... ... @@ -68,7 +69,7 @@ public:
68 69 const bool& cout(void) const;
69 70 const bool& cerr(void) const;
70 71 const std::string& name(void) const;
71   - const int& max_size(void) const;
  72 + const int& buffer_size(void) const;
72 73 const int& indent(void) const;
73 74 const GChatter& chatter(void) const;
74 75 const GFilename& filename(void) const;
... ...
src/app/GApplication.cpp
... ... @@ -348,28 +348,23 @@ void GApplication::logFileOpen(const bool&amp; clobber)
348 348 /***********************************************************************//**
349 349 * @brief Close log file
350 350 *
351   - * Writer trailer into the log file and close application log file.
352   - *
353   - * The trailer is only written in case that there is some content in the
354   - * log file.
  351 + * Close the log file. In case that some characters have been written
  352 + * through the logger a trailer will be appended to the logger before
  353 + * closing the log file. The trailer informs about the computation time
  354 + * used by the application.
355 355 ***************************************************************************/
356 356 void GApplication::logFileClose(void)
357 357 {
358   - // Continue only if log file is open
359   - if (log.is_open()) {
360   -
361   - // If log file is not empty then write the trailer into log file.
362   - // This kluge avoids writing a trailer in an empty log file that
363   - // is for example occuring in copy operations.
364   - if (!log.is_empty()) {
  358 + // Continue only if log file is open and if something has been written
  359 + // through this logger. This avoid writing trailers for logger than
  360 + // have not been used.
  361 + if (log.is_open() && (log.written_size() > 0)) {
365 362  
366   - // Put line feed
367   - log << std::endl;
  363 + // Write line feed before trailer into logger
  364 + log << std::endl;
368 365  
369   - // Write trailer into logger
370   - log_trailer();
371   -
372   - } // endif: logger was not empty
  366 + // Write trailer into logger
  367 + log_trailer();
373 368  
374 369 // Close log file
375 370 log.close();
... ...
src/app/GLog.cpp
... ... @@ -466,7 +466,6 @@ void GLog::clear(void)
466 466 ***************************************************************************/
467 467 long int GLog::size(void) const
468 468 {
469   -std::cout << "GLog::size m_buffer.size()=" << m_buffer.size() << std::endl;
470 469 // Determine the number of characters written to disk
471 470 long int size = (m_file != NULL) ? std::ftell(m_file) : 0;
472 471  
... ... @@ -542,17 +541,18 @@ void GLog::close(void)
542 541 void GLog::init_members(void)
543 542 {
544 543 // Initialise members
545   - m_max_length = 8192;
546   - m_indent = 0;
547   - m_stdout = false;
548   - m_stderr = false;
549   - m_use_date = false;
550   - m_linestart = true;
551   - m_file = NULL;
  544 + m_max_length = 8192;
  545 + m_indent = 0;
  546 + m_written_size = 0;
  547 + m_stdout = false;
  548 + m_stderr = false;
  549 + m_use_date = false;
  550 + m_linestart = true;
  551 + m_file = NULL;
  552 + m_chatter = NORMAL;
552 553 m_filename.clear();
553 554 m_name.clear();
554 555 m_buffer.clear();
555   - m_chatter = NORMAL;
556 556  
557 557 // Return
558 558 return;
... ... @@ -838,6 +838,9 @@ void GLog::append(std::string arg)
838 838 // Add string to buffer
839 839 m_buffer.append(arg);
840 840  
  841 + // Increment written number of characters
  842 + m_written_size += arg.size();
  843 +
841 844 // Flush Buffer
842 845 flush();
843 846  
... ...
src/test/GTestSuite.cpp
... ... @@ -898,7 +898,7 @@ void GTestSuite::init_members(void)
898 898  
899 899 // Set logger parameters
900 900 cout(true);
901   - m_log.max_size(1);
  901 + m_log.buffer_size(1);
902 902  
903 903 // Return
904 904 return;
... ...
src/test/GTestSuites.cpp
... ... @@ -550,7 +550,7 @@ void GTestSuites::init_members(void)
550 550 m_log.clear();
551 551  
552 552 // Set logger parameters
553   - m_log.max_size(1);
  553 + m_log.buffer_size(1);
554 554 m_log.cout(true);
555 555  
556 556 // Return
... ...
test/test_GApplication.cpp
... ... @@ -147,6 +147,10 @@ void TestGApplication::test_GLog(void)
147 147 test_value(log1.size(), 13, "Check logger 1 size in memory");
148 148 test_value(log2.size(), 15, "Check logger 2 size in memory");
149 149  
  150 + // Check the written sizes of the loggers.
  151 + test_value(log1.written_size(), 13, "Check logger 1 written size");
  152 + test_value(log2.written_size(), 6, "Check logger 2 written size");
  153 +
150 154 // Flush both loggers. Each logger flushes what he has.
151 155 log1.flush(true);
152 156 log2.flush(true);
... ...