summary refs log tree commit diff
path: root/src/Logging.cpp
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-06-17 19:18:12 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-06-17 19:18:12 +0300
commit8704265978572e60f8b04d89cec2f404f5ea4113 (patch)
treef1e272705c26ce2b0121d6fffccd60f98246b84d /src/Logging.cpp
parentAdd Visual Studio 2017 support (#336) (diff)
parentUpdate build instructions (diff)
downloadnheko-8704265978572e60f8b04d89cec2f404f5ea4113.tar.xz
Merge branch 'e2ee'
- Support for e2ee rooms
- Implement categories & file logging
- Let the user know when the app can't reach the server (#93)

fixes #13
fixes #326
Diffstat (limited to 'src/Logging.cpp')
-rw-r--r--src/Logging.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/Logging.cpp b/src/Logging.cpp
new file mode 100644

index 00000000..bccbe389 --- /dev/null +++ b/src/Logging.cpp
@@ -0,0 +1,59 @@ +#include "Logging.hpp" + +#include <iostream> +#include <spdlog/sinks/file_sinks.h> + +namespace { +std::shared_ptr<spdlog::logger> db_logger = nullptr; +std::shared_ptr<spdlog::logger> net_logger = nullptr; +std::shared_ptr<spdlog::logger> crypto_logger = nullptr; +std::shared_ptr<spdlog::logger> ui_logger = nullptr; + +constexpr auto MAX_FILE_SIZE = 1024 * 1024 * 6; +constexpr auto MAX_LOG_FILES = 3; +} + +namespace nhlog { +void +init(const std::string &file_path) +{ + auto file_sink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>( + file_path, MAX_FILE_SIZE, MAX_LOG_FILES); + + auto console_sink = std::make_shared<spdlog::sinks::stdout_sink_mt>(); + + std::vector<spdlog::sink_ptr> sinks; + sinks.push_back(file_sink); + sinks.push_back(console_sink); + + net_logger = std::make_shared<spdlog::logger>("net", std::begin(sinks), std::end(sinks)); + ui_logger = std::make_shared<spdlog::logger>("ui", std::begin(sinks), std::end(sinks)); + db_logger = std::make_shared<spdlog::logger>("db", std::begin(sinks), std::end(sinks)); + crypto_logger = + std::make_shared<spdlog::logger>("crypto", std::begin(sinks), std::end(sinks)); +} + +std::shared_ptr<spdlog::logger> +ui() +{ + return ui_logger; +} + +std::shared_ptr<spdlog::logger> +net() +{ + return net_logger; +} + +std::shared_ptr<spdlog::logger> +db() +{ + return db_logger; +} + +std::shared_ptr<spdlog::logger> +crypto() +{ + return crypto_logger; +} +}