LCOV - code coverage report
Current view: top level - libs/kiss/src - logger.cpp (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 17 41 41.5 %
Date: 2024-04-29 14:43:01 Functions: 5 8 62.5 %

          Line data    Source code
       1             : #include "kiss/logger.h"
       2             : 
       3             : #include <stdlib.h>
       4             : #include <iostream>
       5             : 
       6             : namespace kiss {
       7             : 
       8             : std::ostream *Logger::stream = &std::cerr;
       9             : eLogLevel Logger::level = LOG_LEVEL_WARNING;
      10             : const char* sLoggerLevel[] = { " ERROR ", "WARNING", " INFO  ", " DEBUG " };
      11             : 
      12             : class EnvLogger {
      13             : public:
      14             :         EnvLogger() {
      15             :                 Logger::loadEnvLogLevel();
      16             :         }
      17             : };
      18             : static EnvLogger _env_log_;
      19             : 
      20          12 : Logger::Logger(eLogLevel level) {
      21             :         time_t rawtime;
      22             :         struct tm * timeinfo;
      23             :         char buffer[80];
      24             : 
      25          12 :         time(&rawtime);
      26          12 :         timeinfo = localtime(&rawtime);
      27             : 
      28          12 :         strftime(buffer, 80, "%Y-%m-%d %H:%M:%S ", timeinfo);
      29          12 :         *stream << buffer;
      30          12 :         *stream << "[" << sLoggerLevel[level] << "] ";
      31          12 : }
      32             : 
      33          12 : Logger::~Logger() {
      34          12 :         *stream << std::endl;
      35          12 : }
      36             : 
      37          26 : std::ostream &Logger::getLogStream() {
      38          26 :         return (*stream);
      39             : }
      40             : 
      41           0 : void Logger::setLogStream(std::ostream *s) {
      42           0 :         stream = s;
      43           0 : }
      44             : 
      45           0 : void Logger::setLogStream(std::ostream &s) {
      46           0 :         stream = &s;
      47           0 : }
      48             : 
      49           0 : void Logger::setLogLevel(eLogLevel l) {
      50           0 :         level = l;
      51           0 : }
      52         306 : eLogLevel Logger::getLogLevel() {
      53         306 :         return (level);
      54             : }
      55             : 
      56             : 
      57             : 
      58             : 
      59          19 : void Logger::loadEnvLogLevel() {
      60          19 :         if (::getenv("KISS_LOG_LEVEL")) {
      61             :                 
      62           0 :                 int level = atoi(::getenv("KISS_LOG_LEVEL"));
      63           0 :                 switch (level) {
      64           0 :                 case LOG_LEVEL_ERROR:
      65           0 :                         Logger::setLogLevel(LOG_LEVEL_ERROR);
      66           0 :                         break;
      67           0 :                 case LOG_LEVEL_WARNING:
      68           0 :                         Logger::setLogLevel(LOG_LEVEL_WARNING);
      69           0 :                         break;
      70           0 :                 case LOG_LEVEL_INFO:
      71           0 :                         Logger::setLogLevel(LOG_LEVEL_INFO);
      72           0 :                         break;
      73           0 :                 case LOG_LEVEL_DEBUG:
      74           0 :                         Logger::setLogLevel(LOG_LEVEL_DEBUG);
      75           0 :                         break;
      76             :                 default:
      77             :                         std::cerr << "kiss::Logger: unknown log level in KISS_LOG_LEVEL '"
      78           0 :                                         << level << " values from 0-3 expected." << std::endl;
      79             :                         break;
      80             :                 }
      81             :         }
      82          19 : }
      83             : 
      84             : } // namespace kiss
      85             : 

Generated by: LCOV version 1.14