File indexing completed on 2024-05-12 15:57:04

0001 /*
0002  *  SPDX-FileCopyrightText: 2019 Boudewijn Rempt <boud@valdyas.org>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #ifndef KISUSAGELOGGER_H
0007 #define KISUSAGELOGGER_H
0008 
0009 #include <QString>
0010 #include <QScopedPointer>
0011 
0012 #include "kritaglobal_export.h"
0013 
0014 /**
0015  * @brief The KisUsageLogger class logs messages to a logfile
0016  */
0017 class KRITAGLOBAL_EXPORT KisUsageLogger
0018 {
0019 
0020 public:
0021 
0022     KisUsageLogger();
0023     ~KisUsageLogger();
0024 
0025     static void initialize();
0026     static void close();
0027 
0028     /// basic system information
0029     ///    (there is other information spreaded in the code
0030     ///     check usages of writeSysInfo for details)
0031     static QString basicSystemInfo();
0032 
0033     static void writeLocaleSysInfo();
0034 
0035     /// Logs with date/time
0036     static void log(const QString &message);
0037 
0038     /// Writes without date/time
0039     static void write(const QString &message);
0040 
0041     /// Writes to the system information file and Krita log
0042     static void writeSysInfo(const QString &message);
0043 
0044     static void writeHeader();
0045 
0046     /// Returns information about all available screens
0047     static QString screenInformation();
0048 
0049 private:
0050 
0051     void rotateLog();
0052 
0053     Q_DISABLE_COPY(KisUsageLogger)
0054 
0055     struct Private;
0056     const QScopedPointer<Private> d;
0057 
0058     static const QString s_sectionHeader;
0059     static const int s_maxLogs {20};
0060 
0061 };
0062 
0063 #endif // KISUSAGELOGGER_H