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

Logger.cpp

Committer:
Bobty
Date:
2015-02-22
Revision:
12:a52996515063
Child:
20:7933076df5af

File content as of revision 12:a52996515063:

// 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);
    }
}