qTox  Version: nightly | Commit: bc751c8e1cac455f9690654fcfe0f560d2d7dfdd
toxlogger.cpp
Go to the documentation of this file.
1 /*
2  Copyright © 2019 by The qTox Project Contributors
3 
4  This file is part of qTox, a Qt-based graphical interface for Tox.
5 
6  qTox is libre software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  qTox is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with qTox. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #include "toxlogger.h"
21 
22 #include <tox/tox.h>
23 
24 #include <QDebug>
25 #include <QRegularExpression>
26 #include <QString>
27 #include <QStringBuilder>
28 
29 namespace ToxLogger {
30 namespace {
31 
32 QByteArray cleanPath(const char *file)
33 {
34  // for privacy, make the path relative to the c-toxcore source directory
35  const QRegularExpression pathCleaner(QLatin1String{"[\\s|\\S]*c-toxcore."});
36  QByteArray cleanedPath = QString{file}.remove(pathCleaner).toUtf8();
37  cleanedPath.append('\0');
38  return cleanedPath;
39 }
40 
41 } // namespace
42 
47 void onLogMessage(Tox *tox, Tox_Log_Level level, const char *file, uint32_t line,
48  const char *func, const char *message, void *user_data)
49 {
50  const QByteArray cleanedPath = cleanPath(file);
51 
52  switch (level) {
53  case TOX_LOG_LEVEL_TRACE:
54  return; // trace level generates too much noise to enable by default
55  case TOX_LOG_LEVEL_DEBUG:
56  QMessageLogger(cleanedPath.data(), line, func).debug() << message;
57  break;
58  case TOX_LOG_LEVEL_INFO:
59  QMessageLogger(cleanedPath.data(), line, func).info() << message;
60  break;
61  case TOX_LOG_LEVEL_WARNING:
62  QMessageLogger(cleanedPath.data(), line, func).warning() << message;
63  break;
64  case TOX_LOG_LEVEL_ERROR:
65  QMessageLogger(cleanedPath.data(), line, func).critical() << message;
66  break;
67  }
68 }
69 
70 } // namespace ToxLogger
HistMessageContentType::file
@ file
HistMessageContentType::message
@ message
ToxLogger::onLogMessage
void onLogMessage(Tox *tox, Tox_Log_Level level, const char *file, uint32_t line, const char *func, const char *message, void *user_data)
Log message handler for toxcore log messages.
Definition: toxlogger.cpp:47
ToxLogger
Definition: toxlogger.cpp:29
toxlogger.h