Monitor for central heating system (e.g. 2zones+hw) Supports up to 15 temp probes (DS18B20/DS18S20) 3 valve monitors Gas pulse meter recording Use stand-alone or with nodeEnergyServer See http://robdobson.com/2015/09/central-heating-monitor
Dependencies: EthernetInterfacePlusHostname NTPClient Onewire RdWebServer SDFileSystem-RTOS mbed-rtos mbed-src
Diff: Logger.cpp
- Revision:
- 12:a52996515063
- Child:
- 20:7933076df5af
diff -r 30182b9aa833 -r a52996515063 Logger.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Logger.cpp Sun Feb 22 22:08:37 2015 +0000 @@ -0,0 +1,57 @@ +// Log to SD +// Rob Dobson, 2015 + +#include "Logger.h" + +Logger::Logger(const char* eventLogFileName, const char* dataLogFileBase) +{ + _eventLogFileName = eventLogFileName; + _dataLogFileBase = dataLogFileBase; +} + +void Logger::LogEvent(const char* format, ...) +{ + char timeBuf[40]; + time_t seconds = time(NULL); + strftime(timeBuf, sizeof(timeBuf), "%Y-%m-%d\t%H:%M:%S\t", localtime(&seconds)); + + FILE* fp = fopen(_eventLogFileName, "a"); + if (fp == NULL) + { + printf ("Event Log ... Filename %s not found\r\n", _eventLogFileName); + } + else + { + fprintf(fp, timeBuf); + va_list argptr; + va_start(argptr, format); + vfprintf(fp, format, argptr); + va_end(argptr); + fprintf(fp, "\r\n"); + fclose(fp); + } +} + +// Utility function to log data +void Logger::LogData(const char* format, ...) +{ + char fileNameBuf[60]; + strcpy(fileNameBuf, _dataLogFileBase); + time_t seconds = time(NULL); + strftime(fileNameBuf+strlen(fileNameBuf), sizeof(fileNameBuf)-strlen(fileNameBuf), "Data_%Y%m%d.txt", localtime(&seconds)); + + FILE* fp = fopen(fileNameBuf, "a"); + if (fp == NULL) + { + printf ("Data Log ... Filename %s not found\r\n", _eventLogFileName); + } + else + { + va_list argptr; + va_start(argptr, format); + vfprintf(fp, format, argptr); + va_end(argptr); + fprintf(fp, "\r\n"); + fclose(fp); + } +}