Merge pull request #231 from atgeirr/refine-simple-logging

Make setupSimpleDefaultLogging() more flexible.
This commit is contained in:
Atgeirr Flø Rasmussen
2017-03-20 08:08:04 +01:00
committed by GitHub
2 changed files with 33 additions and 4 deletions
+23 -3
View File
@@ -21,9 +21,27 @@
#include <opm/common/OpmLog/Logger.hpp>
#include <opm/common/OpmLog/StreamLog.hpp>
#include <iostream>
#include <errno.h> // For errno
#include <stdio.h> // For fileno() and stdout
#include <unistd.h> // For isatty()
namespace Opm {
namespace {
bool stdoutIsTerminal()
{
const int errno_save = errno; // For playing nice with C error handling.
const int file_descriptor = fileno(stdout);
if (file_descriptor == -1) {
// stdout is an invalid stream
errno = errno_save;
return false;
} else {
return isatty(file_descriptor);
}
}
}
std::shared_ptr<Logger> OpmLog::getLogger() {
if (!m_logger)
@@ -176,12 +194,14 @@ namespace Opm {
void OpmLog::setupSimpleDefaultLogging(const bool use_prefix)
void OpmLog::setupSimpleDefaultLogging(const bool use_prefix,
const bool use_color_coding,
const int message_limit)
{
std::shared_ptr<StreamLog> streamLog = std::make_shared<StreamLog>(std::cout, Log::DefaultMessageTypes);
OpmLog::addBackend( "SimpleDefaultLog", streamLog);
streamLog->setMessageLimiter(std::make_shared<MessageLimiter>(10));
streamLog->setMessageFormatter(std::make_shared<SimpleMessageFormatter>(use_prefix, true));
streamLog->setMessageLimiter(std::make_shared<MessageLimiter>(message_limit));
streamLog->setMessageFormatter(std::make_shared<SimpleMessageFormatter>(use_prefix, use_color_coding && stdoutIsTerminal()));
}
/******************************************************************/
+10 -1
View File
@@ -64,7 +64,16 @@ public:
static void removeAllBackends();
static bool enabledMessageType( int64_t messageType );
static void addMessageType( int64_t messageType , const std::string& prefix);
static void setupSimpleDefaultLogging(const bool use_prefix);
/// Create a basic logging setup that will send all log messages to standard output.
///
/// By default category prefixes will be printed (i.e. Error: or
/// Warning:), color coding will be used, and a maximum of 10
/// messages with the same tag will be printed. These settings can
/// be controlled by the function parameters.
static void setupSimpleDefaultLogging(const bool use_prefix = true,
const bool use_color_coding = true,
const int message_limit = 10);
template <class BackendType>
static std::shared_ptr<BackendType> getBackend(const std::string& name) {