swift
logmessage.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2014 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include "misc/logmessage.h"
7 
8 #include <QLoggingCategory>
9 
10 namespace swift::misc
11 {
12 
13  CLogMessage::CLogMessage() = default;
14 
15  CLogMessage::CLogMessage(const char *file, int line, const char *function) : m_logger(file, line, function) {}
16 
17  CLogMessage::operator CStatusMessage() { return { m_categories, m_severity, message() }; }
18 
19  CLogMessage::~CLogMessage() { ostream(qtCategory()).noquote() << message(); }
20 
21  QByteArray CLogMessage::qtCategory() const { return m_categories.toQString().toLatin1(); }
22 
23  QDebug CLogMessage::ostream(const QByteArray &category) const
24  {
25  if (m_categories.isEmpty())
26  {
27  switch (m_severity)
28  {
29  default:
30  case CStatusMessage::SeverityDebug: return m_logger.debug();
31  case CStatusMessage::SeverityInfo: return m_logger.info();
32  case CStatusMessage::SeverityWarning: return m_logger.warning();
33  case CStatusMessage::SeverityError: return m_logger.critical();
34  }
35  }
36  else
37  {
38  switch (m_severity)
39  {
40  default:
41  case CStatusMessage::SeverityDebug: return m_logger.debug(QLoggingCategory(category.constData()));
42  case CStatusMessage::SeverityInfo: return m_logger.info(QLoggingCategory(category.constData()));
43  case CStatusMessage::SeverityWarning: return m_logger.warning(QLoggingCategory(category.constData()));
44  case CStatusMessage::SeverityError: return m_logger.critical(QLoggingCategory(category.constData()));
45  }
46  }
47  }
48 
49  void CLogMessage::preformatted(const CStatusMessage &statusMessage)
50  {
51  if (statusMessage.isEmpty()) { return; } // just skip empty messages
52  CLogMessage(statusMessage.getCategories()).log(statusMessage.getSeverity(), u"%1")
53  << statusMessage.getMessage();
54  }
55 
56  void CLogMessage::preformatted(const CStatusMessageList &statusMessages)
57  {
58  for (const auto &msg : statusMessages) { preformatted(msg); }
59  }
60 } // namespace swift::misc
61 
CLogMessage()
Construct a message with the "uncategorized" category.
Free functions in swift::misc.