2020-05-30 17:33:27 +02:00
|
|
|
/*
|
2023-04-08 09:26:15 +02:00
|
|
|
** Copyright (C) 2020-2023 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
2020-05-30 17:33:27 +02:00
|
|
|
**
|
|
|
|
** This program is free software; you can redistribute it and/or modify it
|
|
|
|
** under the terms of the GNU General Public License as published by the
|
|
|
|
** Free Software Foundation; either version 3, or (at your option) any
|
|
|
|
** later version.
|
|
|
|
**
|
|
|
|
** This program is distributed in the hope that it will be useful,
|
|
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
** GNU General Public License for more details.
|
|
|
|
**
|
|
|
|
** You should have received a copy of the GNU General Public License
|
|
|
|
** along with this program; if not, write to the Free Software Foundation,
|
|
|
|
** Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
**
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef MU_LOGGER_HH__
|
|
|
|
#define MU_LOGGER_HH__
|
|
|
|
|
|
|
|
#include <string>
|
2022-11-16 18:03:36 +01:00
|
|
|
#include <utils/mu-utils.hh>
|
|
|
|
#include <utils/mu-result.hh>
|
2020-05-30 17:33:27 +02:00
|
|
|
|
|
|
|
namespace Mu {
|
|
|
|
|
|
|
|
/**
|
2022-11-16 18:03:36 +01:00
|
|
|
* RAII object for handling logging (through g_(debug|warning|...))
|
2020-05-30 17:33:27 +02:00
|
|
|
*
|
|
|
|
*/
|
2022-11-16 18:03:36 +01:00
|
|
|
struct Logger {
|
2020-05-30 17:33:27 +02:00
|
|
|
|
2022-11-16 18:03:36 +01:00
|
|
|
/**
|
|
|
|
* Logging options
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
enum struct Options {
|
|
|
|
None = 0, /**< Nothing specific */
|
|
|
|
StdOutErr = 1 << 1, /**< Log to stdout/stderr */
|
2023-04-08 09:26:15 +02:00
|
|
|
File = 1 << 2, /**< Force logging to file, even if journal available */
|
|
|
|
Debug = 1 << 3, /**< Include debug-level logs */
|
2022-11-16 18:03:36 +01:00
|
|
|
};
|
2020-05-30 17:33:27 +02:00
|
|
|
|
2022-11-16 18:03:36 +01:00
|
|
|
/**
|
2023-04-08 09:26:15 +02:00
|
|
|
* Initialize the logging sub-system.
|
2022-11-16 18:03:36 +01:00
|
|
|
*
|
|
|
|
* Note that the path is only used if structured logging fails --
|
|
|
|
* practically, it goes to the file if there's no systemd/journald.
|
|
|
|
*
|
|
|
|
* if the environment variable MU_LOG_STDOUTERR is set,
|
|
|
|
* LogOptions::StdoutErr is implied.
|
|
|
|
*
|
|
|
|
* @param path path to the log file
|
|
|
|
* @param opts logging options
|
|
|
|
*/
|
|
|
|
static Result<Logger> make(const std::string& path, Options opts=Options::None);
|
2020-05-30 17:33:27 +02:00
|
|
|
|
2022-11-16 18:03:36 +01:00
|
|
|
/**
|
|
|
|
* DTOR
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
~Logger();
|
|
|
|
|
|
|
|
private:
|
|
|
|
Logger(const std::string& path, Options opts);
|
|
|
|
};
|
|
|
|
|
|
|
|
MU_ENABLE_BITOPS(Logger::Options);
|
2020-05-30 17:33:27 +02:00
|
|
|
|
2020-07-25 16:27:34 +02:00
|
|
|
} // namespace Mu
|
2020-05-30 17:33:27 +02:00
|
|
|
|
|
|
|
#endif /* MU_LOGGER_HH__ */
|