#include <fcntl.h>
#include <sys/uio.h>
#include <unistd.h>
+#include <sys/time.h>
#include <time.h>
#include <ctype.h>
*/
/* -[un]setuplog <logtype> <loglevel> [<filename>]*/
-static void setuplog_internal(char *logtype, char *loglevel, char *filename)
+static void setuplog_internal(const char *logtype, const char *loglevel, const char *filename)
{
int typenum, levelnum;
char *ptr = message_details_buffer;
int templen;
int len = message_details_buffer_length;
+ struct timeval tv;
*ptr = 0;
- /* Print date */
- time_t thetime;
- time(&thetime);
-
- strftime(ptr, len, "%b %d %H:%M:%S ", localtime(&thetime));
+ /* Print time */
+ gettimeofday(&tv, NULL);
+ strftime(ptr, len, "%b %d %H:%M:%S.", localtime(&tv.tv_sec));
templen = strlen(ptr);
len -= templen;
ptr += templen;
+ templen = snprintf(ptr, len, "%06u ", (int)tv.tv_usec);
+ len -= templen;
+ ptr += templen;
+
/* Process name */
strncpy(ptr, log_config.processname, len);
templen = strlen(ptr);
#endif
}
-void log_setup(char *filename, enum loglevels loglevel, enum logtypes logtype)
+void log_setup(const char *filename, enum loglevels loglevel, enum logtypes logtype)
{
uid_t process_uid;
logtype = logtype_default;
}
- LOG(log_note, logtype_logger, "Setup file logging: type: %s, level: %s, file: %s",
+ LOG(log_debug, logtype_logger, "Setup file logging: type: %s, level: %s, file: %s",
arr_logtype_strings[logtype], arr_loglevel_strings[loglevel], file_configs[logtype].filename);
}
void setuplog(const char *logstr)
{
- char *ptr, *logtype, *loglevel, *filename;
+ char *ptr, *ptrbak, *logtype, *loglevel, *filename;
ptr = strdup(logstr);
-
+ ptrbak = ptr;
+
/* logtype */
logtype = ptr;
/* finally call setuplog, filename can be NULL */
setuplog_internal(logtype, loglevel, filename);
- free(ptr);
+ free(ptrbak);
}
void unsetuplog(const char *logstr)