aboutsummaryrefslogtreecommitdiff
path: root/Logger.cpp
diff options
context:
space:
mode:
authorpazos <paziusss@gmail.com>2018-05-08 18:13:29 +0200
committerpazos <paziusss@gmail.com>2018-05-08 18:13:29 +0200
commit341ac18f1ad6d238d551b114c53f15b9f29f7f1a (patch)
treebf21ed75061ffe05555e38367659b3bdb832ef6b /Logger.cpp
parent7cea1343521de6e0f70f087f15707f467819b0ad (diff)
downloadmonzero-gui-341ac18f1ad6d238d551b114c53f15b9f29f7f1a.tar.gz
monzero-gui-341ac18f1ad6d238d551b114c53f15b9f29f7f1a.tar.xz
monzero-gui-341ac18f1ad6d238d551b114c53f15b9f29f7f1a.zip
log qt/qml to easylogging, add --log-file cmdline option
Diffstat (limited to 'Logger.cpp')
-rw-r--r--Logger.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/Logger.cpp b/Logger.cpp
new file mode 100644
index 00000000..660bafcc
--- /dev/null
+++ b/Logger.cpp
@@ -0,0 +1,49 @@
+#include <QCoreApplication>
+#include <QStandardPaths>
+#include <QFileInfo>
+#include <QString>
+
+#include "Logger.h"
+#include "wallet/api/wallet2_api.h"
+
+// default log path by OS (should be writable)
+static const QString default_name = "monero-wallet-gui.log";
+#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
+ static const QString osPath = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation).at(0);
+#elif defined(Q_OS_WIN)
+ static const QString osPath = QCoreApplication::applicationDirPath();
+#elif defined(Q_OS_MAC)
+ static const QString osPath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation).at(0) + "/Library/Logs";
+#else // linux + bsd
+ static const QString osPath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation).at(0);
+#endif
+
+
+// return the absolute path of the logfile
+const QString getLogPath(const QString logPath)
+{
+ const QFileInfo fi(logPath);
+
+ if(!logPath.isEmpty() && !fi.isDir())
+ return fi.absoluteFilePath();
+ else
+ return osPath + "/" + default_name;
+}
+
+
+// custom messageHandler that foward all messages to easylogging
+void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &message)
+{
+ (void) context; // context isn't used in release builds
+ const std::string cat = "frontend"; // category displayed in the log
+ const std::string msg = message.toStdString();
+ switch(type)
+ {
+ case QtDebugMsg: Monero::Wallet::debug(cat, msg); break;
+ case QtInfoMsg: Monero::Wallet::info(cat, msg); break;
+ case QtWarningMsg: Monero::Wallet::warning(cat, msg); break;
+ case QtCriticalMsg: Monero::Wallet::error(cat, msg); break;
+ case QtFatalMsg: Monero::Wallet::error(cat, msg); break;
+ }
+}
+