From d2fb8067167785b299482d247aaf90a35f55b62c Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Mon, 28 Jan 2013 16:15:50 +0100 Subject: LocomotorPrimitives: Switch to using Logger class for logging --- Logger.cpp | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Logger.cpp (limited to 'Logger.cpp') diff --git a/Logger.cpp b/Logger.cpp new file mode 100644 index 0000000..b0850a6 --- /dev/null +++ b/Logger.cpp @@ -0,0 +1,58 @@ +/** + * General purpose logger class. + * + * Copyright (C) 2013 Tobias Klauser + * + * This file is subject to the terms and conditions of the GNU General + * Public License, version 2. + */ + +#include +#include +#include +#include +#include + +#include "Logger.h" + +const char *Logger::_LOGGER_DATE_FMT = "%b %d %Y %H:%M:%S"; + +int Logger::_log_vfprintf(FILE *f, const char *prefix, const char *fmt, va_list ap) +{ + struct timeval now; + char buf[64]; + int ret; + + if (gettimeofday(&now, NULL)) + return -EINVAL; + + strftime(buf, sizeof(buf), _LOGGER_DATE_FMT, localtime(&now.tv_sec)); + ret = fprintf(f, "[%s.%03lu] %s%s", buf, now.tv_usec / 1000, + prefix ? prefix : "", prefix ? ": " : ""); + + return vfprintf(f, fmt, ap); +} + +int Logger::log(const char *fmt, ...) +{ + va_list ap; + int ret; + + va_start(ap, fmt); + ret = _log_vfprintf(_f_out, NULL, fmt, ap); + va_end(ap); + + return ret; +} + +int Logger::err(const char *fmt, ...) +{ + va_list ap; + int ret; + + va_start(ap, fmt); + ret = _log_vfprintf(_f_err, "Error", fmt, ap); + va_end(ap); + + return ret; +} -- cgit v1.2.3-54-g00ecf