Commit 106664ec4a3cead9d4ef9eaf9b6c247bf7d6e41b
1 parent
aa0bd60b
Setting up the logger
Showing
2 changed files
with
65 additions
and
2 deletions
include/log.h
1 | 1 | #pragma once |
2 | 2 | |
3 | 3 | // std |
4 | +#include <mutex> | |
4 | 5 | #include <syslog.h> |
5 | -#include <unistd.h> | |
6 | 6 | #include <string> |
7 | +#include <unistd.h> | |
7 | 8 | |
8 | 9 | namespace osdev { |
9 | 10 | namespace components { |
... | ... | @@ -213,6 +214,9 @@ private: |
213 | 214 | |
214 | 215 | //! The amount of logging |
215 | 216 | static LogLevel s_logLevel; |
217 | + | |
218 | + //! Mutex to keep the logger thread-safe | |
219 | + static std::mutex m_mutex; | |
216 | 220 | }; |
217 | 221 | |
218 | 222 | } /* End namespace mqtt */ | ... | ... |
src/log.cpp
1 | 1 | #include "log.h" |
2 | - | |
3 | 2 | #include "threadcontext.h" |
4 | 3 | |
5 | 4 | // std |
6 | 5 | #include <ios> |
7 | 6 | #include <iomanip> |
7 | +#include <lockguard.h> | |
8 | 8 | #include <sstream> |
9 | 9 | #include <syslog.h> |
10 | 10 | #include <sys/types.h> |
... | ... | @@ -60,6 +60,8 @@ void Log::terminate() |
60 | 60 | |
61 | 61 | void Log::log( const std::string &category, const std::string &message, LogLevel level ) |
62 | 62 | { |
63 | + std::lock_guard<std::mutex> lock(m_mutex); | |
64 | + | |
63 | 65 | std::string logCategory = s_context + '|' + toString( level ) + '|' + ThreadContext::instance().context() + '|' + category; |
64 | 66 | std::string logMessage = message; |
65 | 67 | if( logMessage.empty() ) |
... | ... | @@ -76,6 +78,13 @@ void Log::log( const std::string &category, const std::string &message, LogLevel |
76 | 78 | writeLog( logCategory, logMessage, level ); |
77 | 79 | } |
78 | 80 | |
81 | +std::string Log::fileinfoMessage( const char *file, int line, const std::string &message ) | |
82 | +{ | |
83 | + static const std::string templ("%1:%2| %3"); | |
84 | + QFileInfo fi(file); | |
85 | + return templ.arg( fi.fileName() ).arg(line).arg(message); | |
86 | +} | |
87 | + | |
79 | 88 | void Log::writeLog(const std::string &category, const std::string &message, LogLevel level) |
80 | 89 | { |
81 | 90 | if( s_fileName.empty() ) |
... | ... | @@ -95,6 +104,56 @@ void Log::writeLog(const std::string &category, const std::string &message, LogL |
95 | 104 | } |
96 | 105 | } |
97 | 106 | |
107 | +void Log::trace(const std::string &category, const std::string &message) | |
108 | +{ | |
109 | + log(category, message, LogLevel::Trace); | |
110 | +} | |
111 | + | |
112 | +void Log::debug(const std::string& category, const std::string& message) | |
113 | +{ | |
114 | + log( category, message, LogLevel::Debug ); | |
115 | +} | |
116 | + | |
117 | +void Log::info(const std::string& category, const std::string& message) | |
118 | +{ | |
119 | + log( category, message, LogLevel::Info ); | |
120 | +} | |
121 | + | |
122 | +void Log::warning(const std::string& category, const std::string& message) | |
123 | +{ | |
124 | + log(category, message, LogLevel::Warning ); | |
125 | +} | |
126 | + | |
127 | +void Log::error(const std::string& category, const std::string& message) | |
128 | +{ | |
129 | + log(category, message, LogLevel::Error ); | |
130 | +} | |
131 | + | |
132 | +void Log::trace(const char *file, int line, const std::string &category, const std::string &message) | |
133 | +{ | |
134 | + log(category, fileinfoMessage(file, line, message), LogLevel::Trace ); | |
135 | +} | |
136 | + | |
137 | +void Log::debug(const char* file, int line, const std::string& category, const std::string& message) | |
138 | +{ | |
139 | + log( category, fileinfoMessage(file, line, message), LogLevel::Debug ); | |
140 | +} | |
141 | + | |
142 | +void Log::info(const char* file, int line, const std::string& category, const std::string& message) | |
143 | +{ | |
144 | + log( category, fileinfoMessage(file, line, message), LogLevel::Info ); | |
145 | +} | |
146 | + | |
147 | +void Log::warning(const char* file, int line, const std::string& category, const std::string& message) | |
148 | +{ | |
149 | + log( category, fileinfoMessage(file, line, message), LogLevel::Warning); | |
150 | +} | |
151 | + | |
152 | +void Log::error(const char* file, int line, const std::string& category, const std::string& message) | |
153 | +{ | |
154 | + log( category, fileinfoMessage(file, line, message), LogLevel::Error ); | |
155 | +} | |
156 | + | |
98 | 157 | void Log::ReplaceAll( std::string &strToReplace, |
99 | 158 | const std::string& from_chars, |
100 | 159 | const std::string& to_chars ) | ... | ... |