|
|
|
@ -17,16 +17,13 @@
@@ -17,16 +17,13 @@
|
|
|
|
|
#include <chrono> |
|
|
|
|
#include <memory> |
|
|
|
|
#include <thread> |
|
|
|
|
#include <functional> |
|
|
|
|
#include "Queue.h" |
|
|
|
|
|
|
|
|
|
#ifndef _WIN32 |
|
|
|
|
#include <syslog.h> |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef WIN32_APP |
|
|
|
|
#include <windows.h> // TODO: move away to win32app |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
enum LogLevel |
|
|
|
|
{ |
|
|
|
|
eLogNone = 0, |
|
|
|
@ -155,6 +152,10 @@ namespace log {
@@ -155,6 +152,10 @@ namespace log {
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
Log & Logger(); |
|
|
|
|
|
|
|
|
|
typedef std::function<void (const std::string&)> ThrowFunction; |
|
|
|
|
ThrowFunction GetThrowFunction (); |
|
|
|
|
void SetThrowFunction (ThrowFunction f); |
|
|
|
|
} // log
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -201,7 +202,6 @@ void LogPrint (LogLevel level, TArgs&&... args) noexcept
@@ -201,7 +202,6 @@ void LogPrint (LogLevel level, TArgs&&... args) noexcept
|
|
|
|
|
log.Append(msg); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Throw fatal error message with the list of arguments |
|
|
|
|
* @param args Array of message parts |
|
|
|
@ -209,6 +209,8 @@ void LogPrint (LogLevel level, TArgs&&... args) noexcept
@@ -209,6 +209,8 @@ void LogPrint (LogLevel level, TArgs&&... args) noexcept
|
|
|
|
|
template<typename... TArgs> |
|
|
|
|
void ThrowFatal (TArgs&&... args) noexcept |
|
|
|
|
{ |
|
|
|
|
auto f = i2p::log::GetThrowFunction (); |
|
|
|
|
if (!f) return; |
|
|
|
|
// fold message to single string
|
|
|
|
|
std::stringstream ss(""); |
|
|
|
|
#if (__cplusplus >= 201703L) // C++ 17 or higher
|
|
|
|
@ -216,12 +218,7 @@ void ThrowFatal (TArgs&&... args) noexcept
@@ -216,12 +218,7 @@ void ThrowFatal (TArgs&&... args) noexcept
|
|
|
|
|
#else |
|
|
|
|
LogPrint (ss, std::forward<TArgs>(args)...); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef WIN32_APP |
|
|
|
|
MessageBox(0, TEXT(ss.str ().c_str ()), TEXT("i2pd"), MB_ICONERROR | MB_TASKMODAL | MB_OK ); |
|
|
|
|
#else |
|
|
|
|
std::cout << ss.str (); |
|
|
|
|
#endif |
|
|
|
|
f (ss.str ()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#endif // LOG_H__
|
|
|
|
|