#include "Logger.hh" #include "LogRecord.hh" #include namespace logging { Logger::Logger( Id idx_ , base::log_permit_flag permissons_, uint32_t on_counter ) : idx(idx_), log_permission(permissons_), handler(nullptr), on_counter(on_counter) {} void Logger::fill_record( const char * message, std::size_t length, LogRecord & record) { record.set_time( std::time( nullptr ) ); record.set_message( message, length ); } //todo: выпилить копипасту. void Logger::log_critical( const char * message, std::size_t length ) { if( handler && ( log_permission & base::on_critical_log ) ) { Local local_handler(handler); if(local_handler) { LogRecord record( on_counter, base::hi_record_priority, idx ); fill_record( message, length, record ); local_handler->publish(record); } } } void Logger::log_error( const char * message, std::size_t length ) { if( handler && ( log_permission & base::on_error_log ) ) { Local local_handler(handler); if(local_handler) { LogRecord record( on_counter, base::medium_record_priority, idx ); fill_record( message, length, record ); local_handler->publish(record); } } } void Logger::log_information( const char * message, std::size_t length ) { if( handler && ( log_permission & base::on_information_log ) ) { Local local_handler(handler); if(local_handler) { LogRecord record( on_counter, base::low_record_priority, idx ); fill_record( message, length, record ); local_handler->publish(record); } } } void Logger::add_handler( ResourceKeeper * h ) { if( h ) handler = h; } }