merging heads 2 of 2

--HG--
rename : g2log/src/g2sinkhandle.h => g2log/src/g2sinkhandle.hpp
This commit is contained in:
KjellKod 2013-12-15 22:17:06 -07:00
commit 507ec52c04
6 changed files with 34 additions and 10 deletions

View File

@ -75,8 +75,18 @@ IF(UNIX)
# -D_GLIBCXX_USE_NANOSLEEP is needed for this_thread sleep (unit testing)
set(CMAKE_CXX_FLAGS "-Wall -rdynamic -Wunused -std=c++11 ${CMAKE_CXX_FLAGS_DEBUG} -pthread -D_GLIBCXX_USE_NANOSLEEP")
set(SRC_PLATFORM_SPECIFIC ${LOG_SRC}/crashhandler_unix.cpp)
ENDIF(UNIX)
ENDIF(UNIX)
IF(MINGW)
MESSAGE("")
MESSAGE("cmake for MinGW ")
MESSAGE("if cmake finishes OK, do make")
MESSAGE("then run './g2log-FATAL-example' or whatever performance test you feel like trying")
MESSAGE("")
# -D_GLIBCXX_USE_NANOSLEEP is needed for this_thread sleep (unit testing)
set(CMAKE_CXX_FLAGS "-Wall -Wunused -std=c++11 ${CMAKE_CXX_FLAGS_DEBUG} -pthread -D_GLIBCXX_USE_NANOSLEEP")
set(SRC_PLATFORM_SPECIFIC ${LOG_SRC}/crashhandler_win.cpp)
ENDIF(MINGW)
# Visual Studio 2011 -- std::thread etc are included with the Visual Studio package, so justthread dependencies are removed
IF(MSVC)
@ -100,11 +110,11 @@ ENDIF(MSVC)
# GENERIC STEPS
file(GLOB SRC_FILES ${LOG_SRC}/*.h ${LOG_SRC}/*.hpp ${LOG_SRC}/*.cpp ${LOG_SRC}/*.ipp)
if(MSVC)
if(MSVC OR MINGW)
list(REMOVE_ITEM SRC_FILES ${LOG_SRC}/crashhandler_unix.cpp)
else()
list(REMOVE_ITEM SRC_FILES ${LOG_SRC}/crashhandler_win.cpp)
endif(MSVC)
endif(MSVC OR MINGW)
set(SRC_FILES ${SRC_FILES} ${SRC_PLATFORM_SPECIFIC})
@ -126,7 +136,7 @@ ENDIF(MSVC)
# (or change the default option above)
if(USE_DYNAMIC_LOGGING_LEVELS)
add_definitions(-DG2_DYNAMIC_LOGGING)
MESSAGE ("\nUSE_DYNAMIC_LOGGING_LEVELS is turned on"\n\t"Use g2::setLogLevel(LEVEL boolean) to enable/disable logging on specified levels.\n\tAll levels are by default turn ON\n\n")
MESSAGE ("\nUSE_DYNAMIC_LOGGING_LEVELS is turned on\n\tUse g2::setLogLevel(LEVEL boolean) to enable/disable logging on specified levels.\n\tAll levels are by default turn ON\n\n")
endif(USE_DYNAMIC_LOGGING_LEVELS)

View File

@ -5,11 +5,13 @@
* ============================================================================*/
#include "crashhandler.hpp"
#include "g2log.hpp"
#include "g2logmessage.hpp"
#include "g2LogMessageBuilder.hpp"
#include <csignal>
#include <cstring>
#include <cstdlib>
#include <sstream>
#if !(defined(WIN32) || defined(_WIN32) || defined(__WIN32__))
#error "crashhandler_win.cpp used but not on a windows system"
#endif
@ -26,9 +28,10 @@ void crashHandler(int signal_number)
fatal_stream << "\n\n***** FATAL TRIGGER RECEIVED ******* " << std::endl;
fatal_stream << "\n***** RETHROWING SIGNAL " << signalName(signal_number) << "(" << signal_number << ")" << std::endl;
FatalMessage fatal_message(fatal_stream.str(),FatalMessage::kReasonOS_FATAL_SIGNAL, signal_number);
FatalMessageBuilder trigger(fatal_message); std::ostringstream oss;
std::cerr << fatal_message.message_ << std::endl << std::flush;
//FatalMessage fatal_message(fatal_stream.str(),FatalMessage::kReasonOS_FATAL_SIGNAL, signal_number);
g2::FatalMessageBuilder trigger(fatal_stream.str(), signal_number);
//std::ostringstream oss;
//std::cerr << fatal_message.message_ << std::endl << std::flush;
} // scope exit - message sent to LogWorker, wait to die...
} // end anonymous namespace
@ -37,6 +40,12 @@ namespace g2
{
namespace internal
{
std::string stackdump()
{
std::string temp;
return temp;
}
std::string signalName(int signal_number)
{
switch(signal_number)

View File

@ -40,6 +40,7 @@ namespace g2 {
prefix.erase(std::remove(prefix.begin(), prefix.end(), '/'), prefix.end());
prefix.erase(std::remove(prefix.begin(), prefix.end(), '\\'), prefix.end());
prefix.erase(std::remove(prefix.begin(), prefix.end(), '.'), prefix.end());
prefix.erase(std::remove(prefix.begin(), prefix.end(), ':'), prefix.end());
if (!isValidFilename(prefix)) {
return
{

View File

@ -27,7 +27,7 @@ namespace g2 {
// return value is SIMPLIFIED to only return a std::string
std::string put_time(const struct tm* tmb, const char* c_time_format) {
#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__))
#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__)) && !defined(__MINGW32__)
std::ostringstream oss;
oss.fill('0');
// BOGUS hack done for VS2012: C++11 non-conformant since it SHOULD take a "const struct tm* "

View File

@ -245,6 +245,7 @@ TEST(LogTest, LOG_IF__FATAL) {
TEST(LogTest, LOG_IF__FATAL__NO_THROW) {
RestoreFileLogger logger(log_directory);
LOG_IF(FATAL, (2 > 3)) << "This message%sshould NOT throw";
logger.reset();
ASSERT_FALSE(mockFatalWasCalled());
}
@ -304,6 +305,7 @@ TEST(CHECK, CHECK_ThatWontThrow) {
CHECK(1 == 1);
CHECK_F(1 == 1, msg.c_str(), "message", "log");
logger.reset();
EXPECT_FALSE(mockFatalWasCalled());
std::string file_content = readFileToText(logger.logFile());

View File

@ -50,7 +50,7 @@ TEST(ConceptSink, OneHundredSinks) {
}
{
RestoreFileLogger logger{"/tmp"};
RestoreFileLogger logger{"./"};
g2::LogWorker* worker = logger._scope->get(); //g2LogWorker::createWithNoSink();
size_t index = 0;
for (auto& flag : flags) {
@ -69,6 +69,8 @@ TEST(ConceptSink, OneHundredSinks) {
write2.append("Hello to 100 receivers :)");
worker->save(message2);
LOG(INFO) << "end message";
logger.reset();
}
// at the curly brace above the ScopedLogger will go out of scope and all the
// 100 logging receivers will get their message to exit after all messages are