Annotation of mqtt/src/logmqtt.c, revision 1.1.2.3

1.1.2.1   misho       1: #include "global.h"
                      2: 
                      3: 
1.1.2.3 ! misho       4: extern char *__progname;
        !             5: 
        !             6: 
1.1.2.2   misho       7: /*
                      8:  * mqtt_rtlm_log() Log message
                      9:  *
                     10:  * @fmt = format string
                     11:  * @... = argument list
                     12:  * return: none
                     13:  */
                     14: static void
                     15: mqtt_rtlm_log(const char *fmt, ...)
                     16: {
                     17:        va_list lst;
                     18: 
                     19:        va_start(lst, fmt);
                     20:        vsyslog(LOG_ERR, fmt, lst);
                     21:        va_end(lst);
                     22: }
                     23: #define MQTT_RTLM_LOG()        (mqtt_rtlm_log("Error:: System #%d - %s", errno, strerror(errno)))
                     24: 
                     25: 
                     26: /*
                     27:  * mqtt_rtlm_open() Open log file
                     28:  *
                     29:  * @cfg = loaded config
                     30:  * return: NULL error or SQL handle
                     31:  */
                     32: FILE *
                     33: mqtt_rtlm_open(sl_config *cfg)
                     34: {
                     35:        FILE *f = NULL;
                     36:        const char *str = NULL;
                     37: 
                     38:        if (!cfg)
                     39:                return NULL;
                     40: 
                     41:        str = (const char*) cfg_GetAttribute(cfg, CFG("mqtt_log"), CFG("name"));
                     42:        if (!str) {
                     43:                mqtt_rtlm_log("Error:: Unknown file name ...\n");
                     44:                return NULL;
                     45:        }
                     46: 
                     47:        if (!(f = fopen(str, "a"))) {
                     48:                MQTT_RTLM_LOG();
                     49:                return NULL;
                     50:        }
                     51: 
                     52:        return f;
                     53: }
                     54: 
                     55: /*
                     56:  * mqtt_rtlm_close() Close log file
                     57:  *
                     58:  * @f = File handle
                     59:  * return: none
                     60:  */
                     61: void
                     62: mqtt_rtlm_close(FILE *f)
                     63: {
                     64:        if (f)
                     65:                fclose(f);
                     66: }
1.1.2.3 ! misho      67: 
        !            68: /*
        !            69:  * mqtt_rtlm_logger() Logger to file
        !            70:  *
        !            71:  * @f = File handle
        !            72:  * @fmt = Message format
        !            73:  * @... = argument list
        !            74:  * return: -1 error or >-1 logged successful
        !            75:  */
        !            76: int
        !            77: mqtt_rtlm_logger(FILE *f, const char *fmt, ...)
        !            78: {
        !            79:        va_list lst;
        !            80:        int ret = 0;
        !            81:        char szStr[STRSIZ] = { 0 }, szFmt[BUFSIZ] = { 0 };
        !            82:        struct tm *tm;
        !            83:        time_t tim;
        !            84: 
        !            85:        if (!f || !fmt)
        !            86:                return -1;
        !            87: 
        !            88:        tim = time(NULL);
        !            89:        tm = localtime(&tim);
        !            90:        strftime(szFmt, sizeof szFmt, "[%Y-%m-%d %H:%M:%S] ", tm);
        !            91:        snprintf(szStr, sizeof szStr, "%s (%d):: ", __progname, getpid());
        !            92:        strlcat(szFmt, szStr, sizeof szFmt);
        !            93:        strlcat(szFmt, fmt, sizeof szFmt);
        !            94: 
        !            95:        va_start(lst, fmt);
        !            96:        ret = vfprintf(f, szFmt, lst);
        !            97:        va_end(lst);
        !            98: 
        !            99:        return ret;
        !           100: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>