Adapts logging

This commit is contained in:
Johannes Wendel
2020-01-06 22:01:18 +01:00
parent 31eb6f43d3
commit 02709e650f
23 changed files with 94 additions and 59 deletions

View File

@@ -7,6 +7,7 @@
#include "input/InputSocketHandlerFactory.h"
#include "DriverFactory.h"
#include "utility/Colors.h"
#include "utility/LoggerFactory.h"
#include <Poco/Net/SocketAddress.h>
#include <Poco/Net/ServerSocket.h>
@@ -126,7 +127,6 @@ void FlippRServer::initialize(Application &self)
//this->input_server->start();
logger().warning(FRED("Input server not started!"));
//https://gist.github.com/NIPE-SYSTEMS/5a06428c0880ed7ff3cc4304be436e3e
ServerApplication::initialize(self);
}
@@ -248,6 +248,11 @@ void FlippRServer::defineOptions(OptionSet& options)
.repeatable(false)
.callback(OptionCallback<FlippRServer>(this, &FlippRServer::handle_config_file))
.argument("server-config", true));
options.addOption(Option("debug", "d", "Switch debug messages on.")
.required(false)
.repeatable(true)
.callback(OptionCallback<FlippRServer>(this, &FlippRServer::create_debug_logger)));
}
void FlippRServer::handle_config_file(const std::string &name, const std::string &value)
@@ -283,5 +288,11 @@ std::string FlippRServer::get_runtime_dir()
return std::getenv("XDG_RUNTIME_DIR") ? std::string(std::getenv("XDG_RUNTIME_DIR")) + "/" : DEFAULT_RUNTIME_DIR;
}
void FlippRServer::create_debug_logger(const std::string &name, const std::string &value)
{
utility::LoggerFactory::ActivateDebugLog();
logger().information(FCYN("Activated debug logging."));
}
}
}

View File

@@ -42,6 +42,8 @@ private:
Poco::Net::HTTPServer* build_output_server();
Poco::Net::TCPServer* build_input_server();
void create_debug_logger(const std::string &name, const std::string &value);
private:
const char * DEFAULT_RUNTIME_DIR = "/tmp/";
const char * INPUT_SOCKET_NAME = "S.flippR_driver.in";

View File

@@ -24,7 +24,7 @@ std::once_flag PinController::GPIO_LIB_INITIALIZED;
PinController::PinController()
{
CLOG(INFO, OUTPUT_LOGGER) << "Created PinController";
CLOG(DEBUG, OUTPUT_LOGGER) << "Created PinController";
std::call_once(GPIO_LIB_INITIALIZED, wiringPiSetup);
}
@@ -53,7 +53,7 @@ void PinController::initialize_port_expander(const uint8_t i2c_address, const ui
mcp23017Setup(pin_base, i2c_address);
char hex_string[4];
sprintf(hex_string, "%X", i2c_address);
CLOG(INFO, OUTPUT_LOGGER) << "MCP23017 initialized with i2c-address 0x" << hex_string << " and pin-base " << int(pin_base);
CLOG(INFO, OUTPUT_LOGGER) << "MCP23017 initialized with i2c-address 0x" << hex_string << " and pin-base " << int(pin_base) << ".";
}

View File

@@ -12,10 +12,10 @@ namespace input
DistributingEvent::DistributingEvent(uint8_t address, int priority, std::string name,
std::chrono::milliseconds bounce_time, std::shared_ptr<EventNotifier> event_notifier)
:
Event(address, priority, std::move(name)),
bounce_time(bounce_time),
event_notifier(std::move(event_notifier)),
activation_state(NOT_ACTIVATED)
Event(address, priority, std::move(name)),
bounce_time(bounce_time),
event_notifier(std::move(event_notifier)),
activation_state(NOT_ACTIVATED)
{}
void DistributingEvent::distribute()

View File

@@ -18,7 +18,7 @@ namespace input
Event::Event(uint8_t address, int priority, std::string name) :
address(address), priority(priority), name(name)
{
//CLOG_IF(VLOG_IS_ON(0), INFO, INPUT_LOGGER) << "Created event: " << name << ", address: " << address;
CLOG_IF(VLOG_IS_ON(0), DEBUG, INPUT_LOGGER) << "Created event: " << name << ", address: " << address;
}
std::string Event::getJsonString()

View File

@@ -18,13 +18,13 @@ namespace input
namespace detail
{
Detector::Detector(std::unique_ptr<InputPinController> input_pin_controller, std::vector<std::shared_ptr<DistributingEvent>> events)
:
input_pin_controller(std::move(input_pin_controller)), events(std::move(events)), is_running(true)
Detector::Detector(std::unique_ptr<InputPinController> input_pin_controller, std::vector<std::shared_ptr<DistributingEvent>> events) :
input_pin_controller(std::move(input_pin_controller)), events(std::move(events)), is_running(true)
{
this->detect_thread = std::thread(&Detector::detect, this);
CLOG(INFO, INPUT_LOGGER) << "Created Detector and started detecting!";
CLOG(DEBUG, INPUT_LOGGER) << "Created Detector";
CLOG(INFO, INPUT_LOGGER) << "Detector thread running. Occuring input-events should get detected now!";
}
Detector::~Detector()

View File

@@ -22,7 +22,7 @@ event_queue(queue)
{
this->notify_thread = std::thread(&EventNotifier::notify, this);
CLOG(INFO, INPUT_LOGGER) << "Created EventNotifier and started thread";
CLOG(DEBUG, INPUT_LOGGER) << "Created EventNotifier and started thread";
}
EventNotifier::~EventNotifier()

View File

@@ -19,7 +19,7 @@ InputDriver::InputDriver(std::shared_ptr<EventNotifier> event_notifier, std::uni
std::map<std::string, std::shared_ptr<Event>> events) :
event_notifier(std::move(event_notifier)), detector(std::move(detector)), events(std::move(events))
{
CLOG(INFO, INPUT_LOGGER) << "Created InputDriver";
CLOG(INFO, INPUT_LOGGER) << "InputDriver created and running.";
}
void InputDriver::register_event_handler(std::shared_ptr<EventHandler> handler)

View File

@@ -67,7 +67,7 @@ std::map<std::string, std::shared_ptr<ItemType>> get_items(const std::string &co
}
catch(json::exception & e)
{
CLOG(INFO, OUTPUT_LOGGER) << "File " << config_path << " seems to be corrupted: " << ": " << e.what();
CLOG(ERROR, OUTPUT_LOGGER) << "File " << config_path << " seems to be corrupted: " << ": " << e.what();
exit(EXIT_FAILURE);
}

View File

@@ -20,13 +20,13 @@ DisplayBoardPinController::DisplayBoardPinController(std::map<std::string, uint8
{
initialize_pins_output(0, pins_display.begin(), pins_display.end());
CLOG(INFO, OUTPUT_LOGGER) << "Created DisplayBoardPinController";
CLOG(DEBUG, OUTPUT_LOGGER) << "Created DisplayBoardPinController";
}
DisplayBoardPinController::DisplayBoardPinController() :
pins_display_board{}
{
CLOG(INFO, OUTPUT_LOGGER) << "Created DisplayBoardPinController without pin map";
CLOG(DEBUG, OUTPUT_LOGGER) << "Created DisplayBoardPinController without pin map";
}
void DisplayBoardPinController::activate_displays() const
@@ -79,7 +79,6 @@ void DisplayBoardPinController::select_display_digit(uint8_t content) const
void DisplayBoardPinController::run_display(uint8_t address) const
{
write_pin(pins_display_board.at("display_select_" + std::to_string(address)), 0);
write_pin(pins_display_board.at("display_select_" + std::to_string(address)), 1);
}

View File

@@ -30,7 +30,7 @@ DisplayController::DisplayController(std::map<std::string, std::shared_ptr<items
this->displays.push_back(std::dynamic_pointer_cast<items::OutputDisplay>(display.second));
}
CLOG(INFO, OUTPUT_LOGGER) << "Created DisplayController and started cycling them.";
CLOG(DEBUG, OUTPUT_LOGGER) << "Created DisplayController and started cycling them.";
activate_displays();
}
@@ -56,13 +56,13 @@ void DisplayController::cycle_displays() const
void DisplayController::activate_displays() const
{
pin_controller->activate_displays();
CLOG(INFO, OUTPUT_LOGGER) << "Activated all displays!";
CLOG(DEBUG, OUTPUT_LOGGER) << "Activated all displays!";
}
void DisplayController::deactivate_displays() const
{
pin_controller->deactivate_displays();
CLOG(INFO, OUTPUT_LOGGER) << "Deactivated all displays!";
CLOG(DEBUG, OUTPUT_LOGGER) << "Deactivated all displays!";
}
}

View File

@@ -18,7 +18,7 @@ namespace detail
DriverBoardPinController::DriverBoardPinController(std::shared_ptr<std::mutex> output_item_mutex) :
output_item_mutex(std::move(output_item_mutex))
{
CLOG(INFO, OUTPUT_LOGGER) << "Created DriverBoardPinController.";
CLOG(DEBUG, OUTPUT_LOGGER) << "Created DriverBoardPinController.";
}
void DriverBoardPinController::activate(items::DriverBoardItem &driver_board_item)

View File

@@ -30,7 +30,7 @@ OutputDriver::OutputDriver(std::shared_ptr<output::DisplayController> display_co
flippers(std::move(flippers)),
displays(std::move(displays))
{
CLOG(INFO, OUTPUT_LOGGER) << "Created OutputDriver";
CLOG(INFO, OUTPUT_LOGGER) << "OutputDriver created and running.";
}
void OutputDriver::activate_displays() const

View File

@@ -20,14 +20,14 @@ SoundBoardPinController::SoundBoardPinController(std::shared_ptr<std::mutex> out
fire_address{fire_address},
address_pins{address_pins}
{
CLOG(INFO, OUTPUT_LOGGER) << "Created SoundBoardPinController";
CLOG(DEBUG, OUTPUT_LOGGER) << "Created SoundBoardPinController";
}
SoundBoardPinController::SoundBoardPinController(std::shared_ptr<std::mutex> output_item_mutex) :
output_item_mutex{output_item_mutex}
{
CLOG(INFO, OUTPUT_LOGGER) << "Created SoundBoardPinController without addresses!";
CLOG(DEBUG, OUTPUT_LOGGER) << "Created SoundBoardPinController without addresses!";
}
void SoundBoardPinController::activate(const items::detail::Sound &sound)

View File

@@ -21,7 +21,7 @@ Display::Display(const uint8_t & address, const uint8_t & id) :
address(address),
id(id)
{
// CLOG(INFO, OUTPUT_LOGGER) << "Created display with id " << id << " and address " << address << ".";
CLOG(DEBUG, OUTPUT_LOGGER) << "Created display with id " << int{id} << " and address " << int{address} << ".";
}
uint8_t Display::get_id() const

View File

@@ -26,7 +26,7 @@ public:
EightDigitDisplay(uint8_t address, uint8_t id) :
detail::Display(address, id)
{
CLOG(INFO, OUTPUT_LOGGER) << "Created EightDigitDisplay with address " << int{this->address} << " and id: " << int{id};
CLOG(DEBUG, OUTPUT_LOGGER) << "Created EightDigitDisplay with address " << int{this->address} << " and id: " << int{id};
}
~EightDigitDisplay() override = default;

View File

@@ -23,7 +23,7 @@ namespace detail
Flipper::Flipper(std::shared_ptr<DriverBoardPinController> pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name) :
Item(std::move(name)), DriverBoardItem(pin_controller, address, pin_base), pin_controller(std::move(pin_controller))
{
//CLOG(INFO , OUTPUT_LOGGER) << "Created flipper \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address);
CLOG(DEBUG, OUTPUT_LOGGER) << "Created flipper \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address);
}
Flipper::~Flipper()
@@ -33,13 +33,13 @@ Flipper::~Flipper()
void Flipper::activate()
{
CLOG(INFO, OUTPUT_LOGGER) << "Flipper " << name << " activated";
CLOG(DEBUG, OUTPUT_LOGGER) << "Flipper " << name << " activated";
this->pin_controller->activate(*this);
}
void Flipper::deactivate()
{
CLOG(INFO, OUTPUT_LOGGER) << "Flipper " << name << " deactivated";
CLOG(DEBUG, OUTPUT_LOGGER) << "Flipper " << name << " deactivated";
this->pin_controller->deactivate(*this);
}

View File

@@ -26,19 +26,19 @@ Lamp::Lamp(std::shared_ptr<DriverBoardPinController> pin_controller, const uint8
activated(false),
activation_time(10)
{
//CLOG(INFO , OUTPUT_LOGGER) << "Created lamp \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address);
CLOG(DEBUG, OUTPUT_LOGGER) << "Created lamp \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address);
}
void Lamp::activate()
{
CLOG(INFO, OUTPUT_LOGGER) << "Activate lamp " << name;
CLOG(DEBUG, OUTPUT_LOGGER) << "Activate lamp " << name;
this->activated = true;
this->pin_controller->activate(*this);
}
void Lamp::deactivate()
{
CLOG(INFO, OUTPUT_LOGGER) << "Deactivate lamp " << name;
CLOG(DEBUG, OUTPUT_LOGGER) << "Deactivate lamp " << name;
this->activated = false;
this->pin_controller->deactivate(*this);
}

View File

@@ -22,7 +22,10 @@ class SevenDigitDisplay : public virtual items::detail::Display, public virtual
{
public:
SevenDigitDisplay(uint8_t address, uint8_t id) :
detail::Display(address, id) {}
detail::Display(address, id)
{
CLOG(DEBUG, OUTPUT_LOGGER) << "Created SevenDigitDisplay with address " << int{this->address} << " and id: " << int{id};
}
void write_score(unsigned int score) override
{

View File

@@ -21,7 +21,7 @@ namespace detail
Solenoid::Solenoid(std::shared_ptr<DriverBoardPinController> pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name, const std::chrono::milliseconds & deactivation_time)
: detail::Item(std::move(name)), DriverBoardItem(pin_controller, address, pin_base), pin_controller(pin_controller), deactivation_time(deactivation_time)
{
//CLOG(INFO, OUTPUT_LOGGER) << "Created solenoid " << name << " with address " << address << " and deactivation-time: " << deactivation_time.count();
CLOG(DEBUG, OUTPUT_LOGGER) << "Created solenoid " << name << " with address " << int{address} << " and deactivation-time: " << deactivation_time.count();
}
void Solenoid::triggerTask()
@@ -35,7 +35,7 @@ void Solenoid::triggerTask()
void Solenoid::trigger()
{
CLOG(INFO, OUTPUT_LOGGER) << "Trigger Solenoid " << name << " for " << deactivation_time.count() << "ms";
CLOG(DEBUG, OUTPUT_LOGGER) << "Trigger Solenoid " << name << " for " << deactivation_time.count() << "ms";
this->trigger_task = std::async(std::launch::async, &Solenoid::triggerTask, this);
}

View File

@@ -23,12 +23,12 @@ namespace detail
Sound::Sound(std::shared_ptr<SoundBoardPinController> pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name, const std::chrono::milliseconds & deactivation_time, const u_int id)
: detail::Item(std::move(name)), DriverBoardItem(pin_controller, address, pin_base), pin_controller(std::move(pin_controller)), deactivation_time(deactivation_time), id(id)
{
//CLOG(INFO , OUTPUT_LOGGER) << "Created sound " << id << " \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address) << ". Deactivation time is: " << deactivation_time.count();
CLOG(DEBUG, OUTPUT_LOGGER) << "Created sound " << id << " \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address) << ". Deactivation time is: " << deactivation_time.count();
}
void Sound::play()
{
CLOG(INFO, OUTPUT_LOGGER) << "Play Sound " << id << " " << name;
CLOG(DEBUG, OUTPUT_LOGGER) << "Play Sound " << id << " " << name;
this->play_task = std::async(std::launch::async, &Sound::playTask, this);
}

View File

@@ -24,45 +24,65 @@ void CreateInputTestLogger(el::Level level)
conf.setToDefault();
conf.set(level, el::ConfigurationType::ToFile, "false");
conf.set(level, el::ConfigurationType::Format, "%datetime [%level] [%func] : %msg");
conf.set(level, el::ConfigurationType::Format, "%datetime [%level] [%fbase] : %msg");
el::Loggers::reconfigureAllLoggers(conf);
}
el::Configurations createConfig(el::Level level)
el::Configurations createConfig(std::string logger)
{
el::Configurations conf;
conf.setToDefault();
conf.setGlobally(el::ConfigurationType::ToStandardOutput, "false");
conf.setGlobally(el::ConfigurationType::MaxLogFileSize, "1500000"); //~1.5MB
conf.set(level, el::ConfigurationType::ToStandardOutput, "true");
conf.set(level, el::ConfigurationType::ToFile, "true");
conf.set(level, el::ConfigurationType::Filename, LOGGER_FILE);
conf.set(level, el::ConfigurationType::Format, "%datetime [%level] [%func] : %msg");
if (debug_log)
{
conf.set(el::Level::Debug, el::ConfigurationType::ToStandardOutput, "true");
conf.set(el::Level::Debug, el::ConfigurationType::ToFile, "true");
conf.set(el::Level::Debug, el::ConfigurationType::Format, "%datetime [%level] [%fbase] : %msg");
conf.set(el::Level::Debug, el::ConfigurationType::Filename, LOGGER_FILE);
}
conf.set(el::Level::Info, el::ConfigurationType::ToStandardOutput, "true");
conf.set(el::Level::Info, el::ConfigurationType::ToFile, "true");
conf.set(el::Level::Info, el::ConfigurationType::Filename, LOGGER_FILE);
conf.set(el::Level::Info, el::ConfigurationType::Format, "%datetime [%level] [%fbase] : %msg");
conf.set(el::Level::Warning, el::ConfigurationType::ToStandardOutput, "true");
conf.set(el::Level::Warning, el::ConfigurationType::ToFile, "true");
conf.set(el::Level::Warning, el::ConfigurationType::Filename, LOGGER_FILE);
conf.set(el::Level::Warning, el::ConfigurationType::Format, "%datetime [%level] [%fbase] : %msg");
conf.set(el::Level::Verbose, el::ConfigurationType::ToStandardOutput, "true");
conf.set(el::Level::Verbose, el::ConfigurationType::ToFile, "true");
conf.set(el::Level::Verbose, el::ConfigurationType::Filename, LOGGER_FILE);
conf.set(el::Level::Verbose, el::ConfigurationType::Format, "%datetime [%level] [%fbase] : %msg");
return conf;
}
void CreateInputLogger(el::Level level)
void CreateInputLogger()
{
el::Loggers::getLogger(INPUT_LOGGER);
el::Configurations conf = createConfig(level);
el::Configurations conf = createConfig(INPUT_LOGGER);
el::Loggers::reconfigureLogger(INPUT_LOGGER, conf);
}
void CreateOutputLogger(el::Level level)
void CreateOutputLogger()
{
el::Loggers::getLogger(OUTPUT_LOGGER);
el::Configurations conf = createConfig(level);
el::Configurations conf = createConfig(OUTPUT_LOGGER);
el::Loggers::reconfigureLogger(OUTPUT_LOGGER, conf);
}
};
void ActivateDebugLog()
{
debug_log = true;
}
}
}
}

View File

@@ -17,11 +17,11 @@ namespace utility
namespace LoggerFactory
{
static bool debug_log = false;
void CreateInputTestLogger(el::Level level = el::Level::Global);
void CreateInputLogger(el::Level level = el::Level::Info);
void CreateOutputLogger(el::Level level = el::Level::Info);
void CreateInputLogger();
void CreateOutputLogger();
void ActivateDebugLog();
};
}