X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=common%2Flog.h;h=3deb67f2f4257ebc5d968e5951477717933156f0;hb=473dc1b0cf6914ec8e7a08168c433c8e2c2eb025;hp=57495cad6e84c3ca3335805cdfe9cee78f5eb065;hpb=1f2344fe8705342b0503af4609064267e9ae42f4;p=casparcg diff --git a/common/log.h b/common/log.h index 57495cad6..3deb67f2f 100644 --- a/common/log.h +++ b/common/log.h @@ -21,11 +21,19 @@ #pragma once +#include "os/stack_trace.h" +#include "utf.h" +#include "thread_info.h" + #include #include +#include +#include #include #include +#include +#include namespace caspar { namespace log { @@ -55,28 +63,7 @@ inline std::basic_string replace_nonprintable_copy(std::basic_string -inline std::basic_ostream< CharT, TraitsT >& operator<< ( - std::basic_ostream< CharT, TraitsT >& strm, severity_level lvl) -{ - if(lvl == trace) - strm << "trace"; - else if(lvl == debug) - strm << "debug"; - else if(lvl == info) - strm << "info"; - else if(lvl == warning) - strm << "warning"; - else if(lvl == error) - strm << "error"; - else if(lvl == fatal) - strm << "fatal"; - else - strm << static_cast(lvl); - - return strm; -}*/ +std::shared_ptr add_preformatted_line_sink(std::function formatted_line_sink); typedef boost::log::sources::wseverity_logger_mt caspar_logger; @@ -90,16 +77,27 @@ BOOST_LOG_INLINE_GLOBAL_LOGGER_INIT(logger, caspar_logger) BOOST_LOG_SEV(::caspar::log::logger::get(), ::boost::log::trivial::lvl) #define CASPAR_LOG_CALL_STACK() try{\ - CASPAR_LOG(info) << L"callstack:\n" << caspar::log::internal::get_call_stack();\ + CASPAR_LOG(info) << L"callstack (" << caspar::get_thread_info().name << L"):\n" << caspar::get_call_stack();\ }\ catch(...){} #define CASPAR_LOG_CURRENT_EXCEPTION() try{\ - CASPAR_LOG(error) << caspar::u16(boost::current_exception_diagnostic_information()) << L"Caught at:\n" << caspar::log::internal::get_call_stack();\ + CASPAR_LOG(error) << caspar::u16(boost::current_exception_diagnostic_information()) << L"Caught at (" << caspar::get_thread_info().name << L"):\n" << caspar::get_call_stack();\ }\ catch(...){} - + +#define CASPAR_LOG_CURRENT_EXCEPTION_AT_LEVEL(lvl) try{\ + CASPAR_LOG(lvl) << caspar::u16(boost::current_exception_diagnostic_information()) << L"Caught at (" << caspar::get_thread_info().name << L"):\n" << caspar::get_call_stack();\ + }\ + catch(...){} + void set_log_level(const std::wstring& lvl); +void print_child( + boost::log::trivial::severity_level level, + const std::wstring& indent, + const std::wstring& elem, + const boost::property_tree::wptree& tree); + }}