Basic logging implemented
Implemented scuffed logging settings page Add helper function to PathManager to create an arbitrary folder
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
#include "singletons/loggingmanager.hpp"
|
||||
#include "debug/log.hpp"
|
||||
#include "singletons/pathmanager.hpp"
|
||||
#include "singletons/settingsmanager.hpp"
|
||||
|
||||
#include <QDir>
|
||||
#include <QStandardPaths>
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
namespace chatterino {
|
||||
namespace singletons {
|
||||
|
||||
LoggingManager::LoggingManager()
|
||||
: pathManager(PathManager::getInstance())
|
||||
{
|
||||
}
|
||||
|
||||
LoggingManager &LoggingManager::getInstance()
|
||||
{
|
||||
static LoggingManager instance;
|
||||
return instance;
|
||||
}
|
||||
|
||||
void LoggingManager::addMessage(const QString &channelName, messages::MessagePtr message)
|
||||
{
|
||||
const auto &settings = singletons::SettingManager::getInstance();
|
||||
|
||||
if (!settings.enableLogging) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto it = this->loggingChannels.find(channelName);
|
||||
if (it == this->loggingChannels.end()) {
|
||||
auto channel = new LoggingChannel(channelName, this->getDirectoryForChannel(channelName));
|
||||
channel->addMessage(message);
|
||||
this->loggingChannels.emplace(channelName, std::move(channel));
|
||||
} else {
|
||||
it->second->addMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
QString LoggingManager::getDirectoryForChannel(const QString &channelName)
|
||||
{
|
||||
if (channelName.startsWith("/whispers")) {
|
||||
return this->pathManager.whispersLogsFolderPath;
|
||||
} else if (channelName.startsWith("/mentions")) {
|
||||
return this->pathManager.mentionsLogsFolderPath;
|
||||
} else {
|
||||
QString logPath(this->pathManager.channelsLogsFolderPath + QDir::separator() + channelName);
|
||||
|
||||
if (!this->pathManager.createFolder(logPath)) {
|
||||
debug::Log("Error creating channel logs folder for channel {}", channelName);
|
||||
}
|
||||
|
||||
return logPath;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace singletons
|
||||
} // namespace chatterino
|
||||
Reference in New Issue
Block a user