ComSDK
 Указатель Классы Пространства имен Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Группы Страницы
logstream.h
1 //===========================================================================
2 #ifndef comlog_unt_LogStreamH
3 #define comlog_unt_LogStreamH
4 //===========================================================================
5 // Заготовка модуля LogStream была сгенерирована CASE средством разработки SA2-DE.
6 // Все права защищены. (2012)
7 //
8 // В данном файле представлен исходный текст основного заголовочного файла модуля.
9 //
10 // ======================================= //
11 // Параметры новой разработки.
12 // ======================================= //
13 // Имя комплекса: GCAD (com)
14 // Имя решения: EventLog (log) (прочерк если модуль относится лишь к комплексу)
15 // Имя проекта: () (прочерк если модуль относится лишь к решению)
16 // Полный SID: log
17 // Время создания: 19:03:11
18 // Дата создания: 2012-09-11
19 // ======================================= //
20 // ============================================================================================ //
21 // Параметры ревизии(версии):
22 // ============================================================================================ //
23 // [prd]Period: 9/2012
24 // [aut]Author: Алексей Шевцов
25 // [did]DeveloperID: ash
26 // [pid]ProblemID: 00001
27 // [rvs = did.date.pid]Revision: //#ash.2012-09-11.00001
28 // [dsc]Description:
29 // [ccm]CodeComment: rvs.{[s]Start | [e]End | []}{[n]New | [o]Old | [d]Develop}
30 // ============================================================================================ //
31 // [prd]Period: 9/2012
32 // [aut]Author: Алексей Шевцов
33 // [did]DeveloperID: ash
34 // [pid]ProblemID: 00002
35 // [rvs = did.date.pid]Revision: //#ash.2012-09-29.00001
36 // [dsc]Description: Добавление возможности вручную определить место перенаправления потока
37 // [ccm]CodeComment: rvs.{[s]Start | [e]End | []}{[n]New | [o]Old | [d]Develop}
38 // ============================================================================================ //
39 
40 //========================================================================
41 // ДОПОЛНИТЕЛЬНЫЕ ПОДКЛЮЧЕНИЯ (Типы и модули, необходимые для .h - файла)
42 //------------------------------------------------------------------------
43 #include "libtools.h"
44 
45 #include <iostream>
46 #include <streambuf>
47 #include <sstream>
48 #include <string>
49 
50 //========================================================================
51 namespace com {
52  namespace log {
53  class MessagePrinter;
54 
60  class MAC_DLLEXPORT LogStream : public std::streambuf
61  {
62  public:
63 
65  LogStream(std::ostream &p_stream, const std::string& p_prefix, MessagePrinter* p_printer);
66  ~LogStream();
67 
68  private:
69  LogStream();
70  void printMessage();
71  void addENDL(std::string& o_message);
72  void completeMessageWithTime(std::string& o_message);
73 
74  virtual int sync();
75  virtual int overflow(int v);
76  virtual std::streamsize xsputn(const char *p, std::streamsize n);
77 
78  private:
79  std::string m_currentStr;
80  std::streambuf *m_oldBuf;
81  std::ostream& m_stream;
82  MessagePrinter* m_printer;
83  std::string m_prefix;
84  };
85  }
86 }
87 //===========================================================================
88 #endif
89 //===========================================================================
90 
Поток лога
Definition: logstream.h:60
Принтер лога
Definition: message_printer.h:52