qpidctrl  0.7.1
Public Slots | Public Member Functions | Protected Member Functions | Properties | Private Slots | Private Attributes | List of all members
QPidLogger Class Reference

#include <qpidlogger.h>

Inheritance diagram for QPidLogger:
Inheritance graph

Public Slots

void logChannelNames (QStringList names)
 
void logChannelValues (QcepDoubleList values)
 
void logString (QString str)
 
void printMessage (QString msg, QDateTime ts=QDateTime::currentDateTime())
 

Public Member Functions

 QPidLogger (QcepSettingsSaverWPtr saver, QPidControllerWPtr ctrl)
 
void writeSettings (QSettings *set, QString section)
 
void readSettings (QSettings *set, QString section)
 

Protected Member Functions

void openLogFileIfNeeded ()
 

Properties

bool enabled
 
QString fileName
 
double updateInterval
 
int pointLimit
 
int scanNumber
 
int pointCount
 
QStringList channelNames
 

Private Slots

void onFilenameChanged (QString name, int n)
 

Private Attributes

QPidObjectNamer m_ObjectNamer
 
QcepSettingsSaverWPtr m_Saver
 
QPidControllerWPtr m_Controller
 
FILE * m_File
 

Detailed Description

Definition at line 12 of file qpidlogger.h.

Constructor & Destructor Documentation

QPidLogger::QPidLogger ( QcepSettingsSaverWPtr  saver,
QPidControllerWPtr  ctrl 
)
explicit

Definition at line 8 of file qpidlogger.cpp.

References onFilenameChanged().

8  :
9  m_ObjectNamer(this, "logger"),
10  m_Saver(saver),
11  m_Controller(ctrl),
12  m_File(NULL),
13  m_Enabled(m_Saver, this, "enabled", true, "Logging Enabled?"),
14  m_FileName(m_Saver, this, "fileName", "pidctrl.log", "Log file name"),
15  m_UpdateInterval(m_Saver, this, "updateInterval", 30, "Logging interval (seconds)"),
16  m_PointLimit(m_Saver, this, "pointLimit", 0, "Start new log scan after this many points"),
17  m_ScanNumber(m_Saver, this, "scanNumber", 0, "Log file scan number"),
18  m_PointCount(QcepSettingsSaverPtr(), this, "pointCount", 0, "Number of points in current log scan"),
19  m_ChannelNames(QcepSettingsSaverPtr(), this, "channelNames", QStringList(), "Log File Column Names")
20 {
21  connect(prop_FileName(), SIGNAL(valueChanged(QString,int)), this, SLOT(onFilenameChanged(QString, int)));
22 }
QPidObjectNamer m_ObjectNamer
Definition: qpidlogger.h:36
QPidControllerWPtr m_Controller
Definition: qpidlogger.h:38
QcepSettingsSaverWPtr m_Saver
Definition: qpidlogger.h:37
FILE * m_File
Definition: qpidlogger.h:39
void onFilenameChanged(QString name, int n)
Definition: qpidlogger.cpp:158

Member Function Documentation

void QPidLogger::logChannelNames ( QStringList  names)
slot

Definition at line 24 of file qpidlogger.cpp.

References DEBUG_LOGGER, and printMessage().

25 {
26  if (QThread::currentThread() != thread()) {
27  INVOKE_CHECK(QMetaObject::invokeMethod(this, "logChannelNames", Q_ARG(QStringList, names)));
28  } else {
29  if (qcepDebug(DEBUG_LOGGER)) {
30  printMessage(tr("QPidLogger::logChannelNames %1 ,...").arg(names.value(0)));
31  }
32 
33  set_ChannelNames(names);
34  }
35 }
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpidlogger.cpp:167
void QPidLogger::logChannelValues ( QcepDoubleList  values)
slot

Definition at line 37 of file qpidlogger.cpp.

References DEBUG_LOGGER, m_File, openLogFileIfNeeded(), and printMessage().

38 {
39  if (QThread::currentThread() != thread()) {
40  INVOKE_CHECK(QMetaObject::invokeMethod(this, "logChannelValues", Q_ARG(QcepDoubleList, values)));
41  } else {
42  if (qcepDebug(DEBUG_LOGGER)) {
43  printMessage(tr("QPidLogger::logChannelValues %1 ,...").arg(values.value(0)));
44  }
45 
46  if (get_Enabled()) {
48 
49  if (m_File) {
50  if (get_PointCount() == 0) {
51  QStringList names = get_ChannelNames();
52 
53  int n = names.length();
54 
55  fprintf(m_File, "#S %d qpid timescan \"%s\" %g\n",
56  get_ScanNumber(),
57  qPrintable(get_FileName()),
58  get_UpdateInterval());
59 
60  fprintf(m_File, "#D %s\n", qPrintable(QDateTime::currentDateTime().toString("ddd MMM d hh:mm:ss yyyy")));
61  fprintf(m_File, "#N %d\n", n);
62  fprintf(m_File, "#L ");
63 
64  if (n) {
65  fprintf(m_File, "%s", qPrintable(names[0]));
66  }
67 
68  for (int i=1; i<n; i++) {
69  fprintf(m_File, " %s", qPrintable(names[i]));
70  }
71 
72  fprintf(m_File, "\n");
73  fflush(m_File);
74 
75  prop_ScanNumber()->incValue(1);
76  }
77 
78  int n = values.length();
79 
80  if (n) {
81  fprintf(m_File, "%0.15g", values.value(0));
82  }
83 
84  for (int i=1; i<n; i++) {
85  fprintf(m_File, "\t%0.15g", values.value(i));
86  }
87 
88  fprintf(m_File, "\n");
89  fflush(m_File);
90 
91  prop_PointCount()->incValue(1);
92 
93  if ((get_PointLimit() > 0) && (get_PointCount() > get_PointLimit())) {
94  set_PointCount(0);
95  }
96  }
97  }
98  }
99 }
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpidlogger.cpp:167
void openLogFileIfNeeded()
Definition: qpidlogger.cpp:122
FILE * m_File
Definition: qpidlogger.h:39
void QPidLogger::logString ( QString  str)
slot

Definition at line 101 of file qpidlogger.cpp.

References DEBUG_LOGGER, m_File, openLogFileIfNeeded(), and printMessage().

102 {
103  if (QThread::currentThread() != thread()) {
104  INVOKE_CHECK(QMetaObject::invokeMethod(this, "logString", Q_ARG(QString, str)));
105  } else {
106  if (qcepDebug(DEBUG_LOGGER)) {
107  printMessage(tr("QPidLogger::logString %1 ,...").arg(str));
108  }
109 
110  if (get_Enabled()) {
112 
113  if (m_File) {
114  fprintf(m_File, "#C %s. %s.\n", qPrintable(QDateTime::currentDateTime().toString("ddd MMM d hh:mm:ss yyyy")),
115  qPrintable(str));
116  fflush(m_File);
117  }
118  }
119  }
120 }
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpidlogger.cpp:167
void openLogFileIfNeeded()
Definition: qpidlogger.cpp:122
FILE * m_File
Definition: qpidlogger.h:39
void QPidLogger::onFilenameChanged ( QString  name,
int  n 
)
privateslot

Definition at line 158 of file qpidlogger.cpp.

References m_File.

Referenced by QPidLogger().

159 {
160  if (m_File) {
161  fclose(m_File);
162 
163  m_File = NULL;
164  }
165 }
FILE * m_File
Definition: qpidlogger.h:39
void QPidLogger::openLogFileIfNeeded ( )
protected

Definition at line 122 of file qpidlogger.cpp.

References m_File, and printMessage().

Referenced by logChannelValues(), and logString().

123 {
124  if (m_File == NULL) {
125  FILE *f = fopen(qPrintable(get_FileName()), "a+");
126 
127  if (f) {
128  m_File = f;
129 
130  rewind(m_File);
131 
132  char buff[4096];
133  int scan=0;
134 
135  do {
136  fgets(buff, sizeof(buff), m_File);
137 
138  if (ferror(m_File)) {
139  printMessage(tr("File error %1").arg(errno));
140  }
141 
142  if (sscanf(buff, "#S %d", &scan) == 1) {
143  set_ScanNumber(scan+1);
144  }
145  } while(!feof(m_File));
146 
147  fprintf(m_File, "#F %s\n", qPrintable(get_FileName()));
148  fprintf(m_File, "#E %d\n", QDateTime::currentDateTime().toTime_t());
149  fprintf(m_File, "#D %s\n", qPrintable(QDateTime::currentDateTime().toString("ddd MMM d hh:mm:ss yyyy")));
150  fflush(m_File);
151  } else {
152  printMessage("Couldn't open log file");
153  set_Enabled(false);
154  }
155  }
156 }
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpidlogger.cpp:167
FILE * m_File
Definition: qpidlogger.h:39
void QPidLogger::printMessage ( QString  msg,
QDateTime  ts = QDateTime::currentDateTime() 
)
slot

Definition at line 167 of file qpidlogger.cpp.

References m_Controller.

Referenced by logChannelNames(), logChannelValues(), logString(), and openLogFileIfNeeded().

168 {
170 
171  if (ctl) {
172  ctl->printMessage(msg, ts);
173  }
174 }
QSharedPointer< QPidController > QPidControllerPtr
QPidControllerWPtr m_Controller
Definition: qpidlogger.h:38
void QPidLogger::readSettings ( QSettings *  set,
QString  section 
)

Definition at line 181 of file qpidlogger.cpp.

182 {
183  QcepProperty::readSettings(this, &staticMetaObject, section, set);
184 }
void QPidLogger::writeSettings ( QSettings *  set,
QString  section 
)

Definition at line 176 of file qpidlogger.cpp.

177 {
178  QcepProperty::writeSettings(this, &staticMetaObject, section, set);
179 }

Member Data Documentation

QPidControllerWPtr QPidLogger::m_Controller
private

Definition at line 38 of file qpidlogger.h.

Referenced by printMessage().

FILE* QPidLogger::m_File
private

Definition at line 39 of file qpidlogger.h.

Referenced by logChannelValues(), logString(), onFilenameChanged(), and openLogFileIfNeeded().

QPidObjectNamer QPidLogger::m_ObjectNamer
private

Definition at line 36 of file qpidlogger.h.

QcepSettingsSaverWPtr QPidLogger::m_Saver
private

Definition at line 37 of file qpidlogger.h.

Property Documentation

QStringList QPidLogger::channelNames
readwrite

Definition at line 60 of file qpidlogger.h.

bool QPidLogger::enabled
readwrite

Definition at line 42 of file qpidlogger.h.

QString QPidLogger::fileName
readwrite

Definition at line 45 of file qpidlogger.h.

int QPidLogger::pointCount
readwrite

Definition at line 57 of file qpidlogger.h.

int QPidLogger::pointLimit
readwrite

Definition at line 51 of file qpidlogger.h.

int QPidLogger::scanNumber
readwrite

Definition at line 54 of file qpidlogger.h.

double QPidLogger::updateInterval
readwrite

Definition at line 48 of file qpidlogger.h.


The documentation for this class was generated from the following files: