Skip to main content
PSpei
Associate II
October 29, 2022
Question

Logging code modification

  • October 29, 2022
  • 0 replies
  • 930 views

Hi All,

I've had some logging code written some time back and I'd like to be able to selectively prepend the date/time onto what gets passed in however I'm at a loss as to know how to do this or where to start. The code that was supplied is below.

#ifndef LOGGING_H_
#define LOGGING_H_
 
#include <stdarg.h>
#include <stdio.h>
 
#define LOG_LEVEL_SILENT 0
#define LOG_LEVEL_ERROR 1
#define LOG_LEVEL_INFO 2
#define LOG_LEVEL_DEBUG 3
 
#define DEFAULT_LOG_LEVEL LOG_LEVEL_DEBUG
 
/* global log level which can be accessed anywhere this file is included */
extern uint8_t log_level_global_;
 
#define LOG(level, fmt, ...) \
 do { if (level <= log_level_global_) printf(fmt, ##__VA_ARGS__); } while (0)
 
#define LOGLN(level, fmt, ...) \
 do { if (level <= log_level_global_) printf(fmt"\r\n", ##__VA_ARGS__); } while (0)
 
#define LOG_ERROR(fmt, ...) LOG(LOG_LEVEL_ERROR, fmt, ##__VA_ARGS__)
#define LOG_INFO(fmt, ...) LOG(LOG_LEVEL_INFO, fmt, ##__VA_ARGS__)
#define LOG_DEBUG(fmt, ...) LOG(LOG_LEVEL_DEBUG, fmt, ##__VA_ARGS__)
 
#define LOGLN_ERROR(fmt, ...) LOGLN(LOG_LEVEL_ERROR, fmt, ##__VA_ARGS__)
#define LOGLN_INFO(fmt, ...) LOGLN(LOG_LEVEL_INFO, fmt, ##__VA_ARGS__)
#define LOGLN_DEBUG(fmt, ...) LOGLN(LOG_LEVEL_DEBUG, fmt, ##__VA_ARGS__)
 
void logging_set_log_level(uint8_t level);
uint8_t logging_get_log_level(void);
 
#endif

And I'd like to add something like the following to the beginning of the line without having to pass it in every time. Calling a function like LOGLN_INFO_DT would be ideal or similar.

char timebuf[20];
time_keeper_get_time_string(timebuf);
LOGLN_INFO("\r\n\n%s \tSYSTEM Initializing", timebuf);

Thanks,

Paul

This topic has been closed for replies.