[libcamera-devel] [PATCH 5/5] libcamera: base: log: Color the log prefix
Umang Jain
umang.jain at ideasonboard.com
Sun May 29 14:37:44 CEST 2022
Hi Laurent
On 5/26/22 00:25, Laurent Pinchart via libcamera-devel wrote:
> Add coloring to the log prefix to increase log readability.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Looks good,
Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
> ---
> include/libcamera/base/log.h | 5 ++++-
> src/libcamera/base/log.cpp | 37 +++++++++++++++++++++++-------------
> 2 files changed, 28 insertions(+), 14 deletions(-)
>
> diff --git a/include/libcamera/base/log.h b/include/libcamera/base/log.h
> index 3f065267c914..3fc5ced38a6a 100644
> --- a/include/libcamera/base/log.h
> +++ b/include/libcamera/base/log.h
> @@ -57,7 +57,8 @@ class LogMessage
> {
> public:
> LogMessage(const char *fileName, unsigned int line,
> - const LogCategory &category, LogSeverity severity);
> + const LogCategory &category, LogSeverity severity,
> + const std::string &prefix = std::string());
>
> LogMessage(LogMessage &&);
> ~LogMessage();
> @@ -68,6 +69,7 @@ public:
> LogSeverity severity() const { return severity_; }
> const LogCategory &category() const { return category_; }
> const std::string &fileInfo() const { return fileInfo_; }
> + const std::string &prefix() const { return prefix_; }
> const std::string msg() const { return msgStream_.str(); }
>
> private:
> @@ -80,6 +82,7 @@ private:
> LogSeverity severity_;
> utils::time_point timestamp_;
> std::string fileInfo_;
> + std::string prefix_;
> };
>
> class Loggable
> diff --git a/src/libcamera/base/log.cpp b/src/libcamera/base/log.cpp
> index a9f5bbbd36f7..6620a50a5b6f 100644
> --- a/src/libcamera/base/log.cpp
> +++ b/src/libcamera/base/log.cpp
> @@ -219,6 +219,7 @@ void LogOutput::write(const LogMessage &msg)
>
> const char *categoryColor = color_ ? kColorBrightWhite : "";
> const char *fileColor = color_ ? kColorBrightBlue : "";
> + const char *prefixColor = color_ ? kColorGreen : "";
> const char *msgColor = color_ ? kColorReset : "";
> const char *severityColor = "";
> LogSeverity severity = msg.severity();
> @@ -234,8 +235,10 @@ void LogOutput::write(const LogMessage &msg)
> switch (target_) {
> case LoggingTargetSyslog:
> str = std::string(log_severity_name(severity)) + " "
> - + msg.category().name() + " " + msg.fileInfo() + " "
> - + msg.msg();
> + + msg.category().name() + " " + msg.fileInfo() + " ";
> + if (!msg.prefix().empty())
> + str += msg.prefix() + ": ";
> + str += msg.msg();
> writeSyslog(severity, str);
> break;
> case LoggingTargetStream:
> @@ -244,8 +247,10 @@ void LogOutput::write(const LogMessage &msg)
> + std::to_string(Thread::currentId()) + "] "
> + severityColor + log_severity_name(severity) + " "
> + categoryColor + msg.category().name() + " "
> - + fileColor + msg.fileInfo() + " "
> - + msgColor + msg.msg();
> + + fileColor + msg.fileInfo() + " ";
> + if (!msg.prefix().empty())
> + str += prefixColor + msg.prefix() + ": ";
> + str += msgColor + msg.msg();
> writeStream(str);
> break;
> default:
> @@ -823,14 +828,17 @@ const LogCategory &LogCategory::defaultCategory()
> * will be displayed
> * \param[in] severity The log message severity, controlling how the message
> * will be displayed
> + * \param[in] prefix The log message prefix
> *
> * Create a log message pertaining to line \a line of file \a fileName. The
> * \a severity argument sets the message severity to control whether it will be
> - * output or dropped.
> + * output or dropped. The \a prefix optionally identifies the object instance
> + * logging the message.
> */
> LogMessage::LogMessage(const char *fileName, unsigned int line,
> - const LogCategory &category, LogSeverity severity)
> - : category_(category), severity_(severity)
> + const LogCategory &category, LogSeverity severity,
> + const std::string &prefix)
> + : category_(category), severity_(severity), prefix_(prefix)
> {
> init(fileName, line);
> }
> @@ -919,6 +927,12 @@ LogMessage::~LogMessage()
> * \return The file info of the message
> */
>
> +/**
> + * \fn LogMessage::prefix()
> + * \brief Retrieve the prefix of the log message
> + * \return The prefix of the message
> + */
> +
> /**
> * \fn LogMessage::msg()
> * \brief Retrieve the message text of the log message
> @@ -966,12 +980,9 @@ Loggable::~Loggable()
> LogMessage Loggable::_log(const LogCategory *category, LogSeverity severity,
> const char *fileName, unsigned int line) const
> {
> - LogMessage msg(fileName, line,
> - category ? *category : LogCategory::defaultCategory(),
> - severity);
> -
> - msg.stream() << logPrefix() << ": ";
> - return msg;
> + return LogMessage(fileName, line,
> + category ? *category : LogCategory::defaultCategory(),
> + severity, logPrefix());
> }
>
> /**
More information about the libcamera-devel
mailing list