LCOV - code coverage report
Current view: top level - libs/kiss/src - logger.cpp (source / functions) Coverage Total Hit
Test: coverage.info.cleaned Lines: 41.5 % 41 17
Test Date: 2026-06-18 09:49:19 Functions: 62.5 % 8 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           54 : Logger::Logger(eLogLevel level) {
      21              :         time_t rawtime;
      22              :         struct tm * timeinfo;
      23              :         char buffer[80];
      24              : 
      25           54 :         time(&rawtime);
      26           54 :         timeinfo = localtime(&rawtime);
      27              : 
      28           54 :         strftime(buffer, 80, "%Y-%m-%d %H:%M:%S ", timeinfo);
      29           54 :         *stream << buffer;
      30           54 :         *stream << "[" << sLoggerLevel[level] << "] ";
      31           54 : }
      32              : 
      33           54 : Logger::~Logger() {
      34           54 :         *stream << std::endl;
      35           54 : }
      36              : 
      37          110 : std::ostream &Logger::getLogStream() {
      38          110 :         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          302 : eLogLevel Logger::getLogLevel() {
      53          302 :         return (level);
      54              : }
      55              : 
      56              : 
      57              : 
      58              : 
      59           18 : void Logger::loadEnvLogLevel() {
      60           18 :         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           18 : }
      83              : 
      84              : } // namespace kiss
      85              : 
        

Generated by: LCOV version 2.0-1