added open service logs to logs page (#951)
* added open service logs to logs page * redesign of log saving buttons * hide service logs buttons for mobile platforms * refactoring: moved logger to common folder * feature: added the ability to enable logs to the start screen
This commit is contained in:
parent
918be16372
commit
9cab51fb00
22 changed files with 519 additions and 691 deletions
114
common/logger/logger.h
Normal file
114
common/logger/logger.h
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
#ifndef LOGGER_H
|
||||
#define LOGGER_H
|
||||
|
||||
#include <QDebug>
|
||||
#include <QDir>
|
||||
#include <QFile>
|
||||
#include <QString>
|
||||
#include <QTextStream>
|
||||
|
||||
#include "mozilla/shared/loglevel.h"
|
||||
|
||||
class Logger : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
static Logger &Instance();
|
||||
|
||||
static bool init(bool isServiceLogger);
|
||||
static void deInit();
|
||||
|
||||
static bool setServiceLogsEnabled(bool enabled);
|
||||
|
||||
static bool openLogsFolder(bool isServiceLogger);
|
||||
|
||||
static void clearLogs(bool isServiceLogger);
|
||||
static void clearServiceLogs();
|
||||
static void cleanUp();
|
||||
|
||||
static QString userLogsFilePath();
|
||||
static QString serviceLogsFilePath();
|
||||
static QString systemLogDir();
|
||||
|
||||
static QString getLogFile();
|
||||
static QString getServiceLogFile();
|
||||
|
||||
// compat with Mozilla logger
|
||||
Logger(const QString &className)
|
||||
{
|
||||
m_className = className;
|
||||
}
|
||||
const QString &className() const
|
||||
{
|
||||
return m_className;
|
||||
}
|
||||
|
||||
class Log
|
||||
{
|
||||
public:
|
||||
Log(Logger *logger, LogLevel level);
|
||||
~Log();
|
||||
|
||||
Log &operator<<(uint64_t t);
|
||||
Log &operator<<(const char *t);
|
||||
Log &operator<<(const QString &t);
|
||||
Log &operator<<(const QStringList &t);
|
||||
Log &operator<<(const QByteArray &t);
|
||||
Log &operator<<(const QJsonObject &t);
|
||||
Log &operator<<(QTextStreamFunction t);
|
||||
Log &operator<<(const void *t);
|
||||
|
||||
// Q_ENUM
|
||||
template<typename T> typename std::enable_if<QtPrivate::IsQEnumHelper<T>::Value, Log &>::type operator<<(T t)
|
||||
{
|
||||
const QMetaObject *meta = qt_getEnumMetaObject(t);
|
||||
const char *name = qt_getEnumName(t);
|
||||
addMetaEnum(typename QFlags<T>::Int(t), meta, name);
|
||||
return *this;
|
||||
}
|
||||
|
||||
private:
|
||||
void addMetaEnum(quint64 value, const QMetaObject *meta, const char *name);
|
||||
|
||||
Logger *m_logger;
|
||||
LogLevel m_logLevel;
|
||||
|
||||
struct Data
|
||||
{
|
||||
Data() : m_ts(&m_buffer, QIODevice::WriteOnly)
|
||||
{
|
||||
}
|
||||
|
||||
QString m_buffer;
|
||||
QTextStream m_ts;
|
||||
};
|
||||
|
||||
Data *m_data;
|
||||
};
|
||||
|
||||
Log error();
|
||||
Log warning();
|
||||
Log info();
|
||||
Log debug();
|
||||
QString sensitive(const QString &input);
|
||||
|
||||
private:
|
||||
Logger() {};
|
||||
Logger(Logger const &) = delete;
|
||||
Logger &operator=(Logger const &) = delete;
|
||||
|
||||
static QString userLogsDir();
|
||||
|
||||
static QFile m_file;
|
||||
static QTextStream m_textStream;
|
||||
static QString m_logFileName;
|
||||
static QString m_serviceLogFileName;
|
||||
|
||||
friend void debugMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg);
|
||||
|
||||
// compat with Mozilla logger
|
||||
QString m_className;
|
||||
};
|
||||
|
||||
#endif // LOGGER_H
|
||||
Loading…
Add table
Add a link
Reference in a new issue