This is Unofficial EPICS BASE Doxygen Site
logger.cpp
Go to the documentation of this file.
1 
7 #include <fstream>
8 #include <iostream>
9 #include <time.h>
10 #include <cstring>
11 #include <stdio.h>
12 
13 #include <epicsExit.h>
14 #include <errlog.h>
15 #include <epicsTime.h>
16 
17 #include <pv/noDefaultMethods.h>
18 #include <pv/lock.h>
19 #include <pv/pvType.h>
20 
21 #define epicsExportSharedSymbols
22 #include <pv/logger.h>
23 
24 using namespace epics::pvData;
25 using std::ofstream;
26 using std::ios;
27 using std::endl;
28 
29 namespace epics {
30 namespace pvAccess {
31 
32 #define TIMETEXTLEN 32
33 
34 static pvAccessLogLevel g_pvAccessLogLevel = logLevelInfo;
35 
36 void pvAccessLog(pvAccessLogLevel level, const char* format, ...)
37 {
38  // TODO lock
39  if (level >= g_pvAccessLogLevel)
40  {
41  char timeText[TIMETEXTLEN];
42  epicsTimeStamp tsNow;
43 
44  epicsTimeGetCurrent(&tsNow);
45  epicsTimeToStrftime(timeText, TIMETEXTLEN, "%Y-%m-%dT%H:%M:%S.%03f", &tsNow);
46 
47  printf("%s ", timeText);
48 
49  va_list arg;
50  va_start(arg, format);
51  vprintf(format, arg);
52  va_end(arg);
53 
54  printf("\n");
55  fflush(stdout); // needed for WIN32
56  }
57 }
58 
60 {
61  g_pvAccessLogLevel = level;
62 }
63 
65 {
66  return level >= g_pvAccessLogLevel;
67 }
68 
69 }
70 }
void pvAccessLog(pvAccessLogLevel level, const char *format,...)
Definition: logger.cpp:36
#define printf
Definition: epicsStdio.h:41
TODO only here because of the Lockable.
Definition: ntaggregate.cpp:16
void pvAccessSetLogLevel(pvAccessLogLevel level)
Definition: logger.cpp:59
LIBCOM_API size_t epicsStdCall epicsTimeToStrftime(char *pBuff, size_t bufLength, const char *pFormat, const epicsTimeStamp *pTS)
Convert epicsTimeStamp to string. See epicsTime::strftime()
Definition: epicsTime.cpp:1120
pvData
Definition: monitor.h:428
int epicsStdCall epicsTimeGetCurrent(epicsTimeStamp *pDest)
Get current time into *pDest.
Extended replacement for the Posix exit and atexit routines.
#define stdout
Definition: epicsStdio.h:30
EPICS time stamp, for use from C code.
Definition: epicsTime.h:33
bool pvAccessIsLoggable(pvAccessLogLevel level)
Definition: logger.cpp:64
#define TIMETEXTLEN
Definition: logger.cpp:32
EPICS time-stamps (epicsTimeStamp), epicsTime C++ class and C functions for handling wall-clock times...