Skip to content

Commit d17c12c

Browse files
author
ad4220
committed
[feat] Added file, line and function information as arguments.
1 parent 77b54fb commit d17c12c

File tree

2 files changed

+30
-26
lines changed

2 files changed

+30
-26
lines changed

src/utility/Logger.cpp

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010

1111
#include "Logger.hpp"
12+
#include "Exceptions.hpp"
1213
#include <cstdio>
1314
#include <ctime>
1415
#include <iterator>
@@ -53,20 +54,22 @@ constexpr std::string_view Logger::getLevelName(Logger::Level level)
5354
case Logger::Level::debug:
5455
return "debug";
5556
default:
56-
throw std::invalid_argument("Invalid Level enum.");
57+
ThrowException("Invalid Level enum.");
5758
}
5859
}
5960

60-
void Logger::log(Level level, std::string_view message)
61+
void Logger::log(Level level, const char *file, unsigned int line, const char *func, std::string_view message)
6162
{
62-
if (isLoggable(level))
63-
{
63+
if (!isLoggable(level))
64+
return;
6465

65-
std::time_t now = std::time(nullptr);
66+
std::time_t now = std::time(nullptr);
6667

67-
char timestamp[std::size(Logger::timestampFormat)];
68-
std::strftime(timestamp, std::size(Logger::timestampFormat),
69-
"%FT%TZ", std::localtime(&now));
70-
logStream << '[' << timestamp << "] " << '(' << name << ") " << '[' << getLevelName(level) << "] " << message << '\n';
71-
}
68+
char timestamp[std::size(Logger::timestampFormat)];
69+
std::strftime(timestamp, std::size(Logger::timestampFormat),
70+
"%FT%TZ", std::localtime(&now));
71+
72+
char outputInfo[1024];
73+
snprintf(outputInfo, 1024, "[%s](%s)[%s]@%s:%d:%s() ", timestamp, name.c_str(), getLevelName(level).data(), file, line, func);
74+
logStream << outputInfo << message << '\n';
7275
}

src/utility/Logger.hpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
*
88
*/
99

10+
#pragma once
1011

1112
#include <iostream>
1213
#include <string_view>
@@ -23,12 +24,12 @@ class Logger
2324

2425
enum class Level
2526
{
26-
error,
27-
warning,
28-
severe,
29-
info,
27+
debug,
3028
fine,
31-
debug
29+
info,
30+
severe,
31+
warning,
32+
error
3233
};
3334

3435
Logger(std::string_view name)
@@ -46,20 +47,20 @@ class Logger
4647
{
4748
}
4849

49-
void setFilter(Filter filterToSet) { filter = filterToSet; }
50+
Logger() = delete;
51+
52+
void log(Level level, const char *file, unsigned int line, const char *func, std::string_view message);
5053

51-
void log(Level level, std::string_view message);
52-
53-
inline void error(std::string_view message) { log(Level::error, message); };
54-
inline void warning(std::string_view message) { log(Level::warning, message); };
55-
inline void severe(std::string_view message) { log(Level::severe, message); };
56-
inline void info(std::string_view message) { log(Level::info, message); };
57-
inline void fine(std::string_view message) { log(Level::fine, message); };
58-
inline void debug(std::string_view message) { log(Level::debug, message); };
54+
inline void error(const char *file, unsigned int line, const char *func, std::string_view message) { log(Level::error, file, line, func, message); };
55+
inline void warning(const char *file, unsigned int line, const char *func, std::string_view message) { log(Level::warning, file, line, func, message); };
56+
inline void severe(const char *file, unsigned int line, const char *func, std::string_view message) { log(Level::severe, file, line, func, message); };
57+
inline void info(const char *file, unsigned int line, const char *func, std::string_view message) { log(Level::info, file, line, func, message); };
58+
inline void fine(const char *file, unsigned int line, const char *func, std::string_view message) { log(Level::fine, file, line, func, message); };
59+
inline void debug(const char *file, unsigned int line, const char *func, std::string_view message) { log(Level::debug, file, line, func, message); };
5960

6061
private:
61-
std::string name;
62-
Filter filter;
62+
const std::string name;
63+
const Filter filter;
6364
std::ostream &logStream;
6465

6566
// ISO 8601 date time format

0 commit comments

Comments
 (0)