mirror of https://github.com/Icinga/icinga2.git
Implemented colored log messages.
This commit is contained in:
parent
f5a3dc4d84
commit
886fd3a5b8
|
@ -125,8 +125,11 @@ void Logger::ForwardLogEntry(const LogEntry& entry)
|
||||||
processed = true;
|
processed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!processed && entry.Severity >= LogInformation)
|
if (!processed && entry.Severity >= LogInformation) {
|
||||||
StreamLogger::ProcessLogEntry(std::cout, entry);
|
static bool tty = StreamLogger::IsTty(std::cout);
|
||||||
|
|
||||||
|
StreamLogger::ProcessLogEntry(std::cout, tty, entry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -25,7 +25,7 @@ using namespace icinga;
|
||||||
* Constructor for the StreamLogger class.
|
* Constructor for the StreamLogger class.
|
||||||
*/
|
*/
|
||||||
StreamLogger::StreamLogger(void)
|
StreamLogger::StreamLogger(void)
|
||||||
: ILogger(), m_Stream(NULL), m_OwnsStream(false)
|
: ILogger(), m_Stream(NULL), m_OwnsStream(false), m_Tty(false)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -34,7 +34,7 @@ StreamLogger::StreamLogger(void)
|
||||||
* @param stream The stream.
|
* @param stream The stream.
|
||||||
*/
|
*/
|
||||||
StreamLogger::StreamLogger(ostream *stream)
|
StreamLogger::StreamLogger(ostream *stream)
|
||||||
: ILogger(), m_Stream(stream), m_OwnsStream(false)
|
: ILogger(), m_Stream(stream), m_OwnsStream(false), m_Tty(IsTty(*stream))
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,15 +62,17 @@ void StreamLogger::OpenFile(const String& filename)
|
||||||
|
|
||||||
m_Stream = stream;
|
m_Stream = stream;
|
||||||
m_OwnsStream = true;
|
m_OwnsStream = true;
|
||||||
|
m_Tty = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processes a log entry and outputs it to a stream.
|
* Processes a log entry and outputs it to a stream.
|
||||||
*
|
*
|
||||||
* @param stream The output stream.
|
* @param stream The output stream.
|
||||||
|
* @param tty Whether the output stream is a TTY.
|
||||||
* @param entry The log entry.
|
* @param entry The log entry.
|
||||||
*/
|
*/
|
||||||
void StreamLogger::ProcessLogEntry(std::ostream& stream, const LogEntry& entry)
|
void StreamLogger::ProcessLogEntry(ostream& stream, bool tty, const LogEntry& entry)
|
||||||
{
|
{
|
||||||
char timestamp[100];
|
char timestamp[100];
|
||||||
|
|
||||||
|
@ -79,9 +81,26 @@ void StreamLogger::ProcessLogEntry(std::ostream& stream, const LogEntry& entry)
|
||||||
|
|
||||||
strftime(timestamp, sizeof(timestamp), "%Y/%m/%d %H:%M:%S %z", &tmnow);
|
strftime(timestamp, sizeof(timestamp), "%Y/%m/%d %H:%M:%S %z", &tmnow);
|
||||||
|
|
||||||
|
if (tty) {
|
||||||
|
String colorCode;
|
||||||
|
switch (entry.Severity) {
|
||||||
|
case LogWarning:
|
||||||
|
colorCode = "\x1b[33m"; // yellow;
|
||||||
|
break;
|
||||||
|
case LogCritical:
|
||||||
|
colorCode = "\x1b[31m"; // red
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
stream << colorCode;
|
||||||
|
}
|
||||||
|
|
||||||
stream << "[" << timestamp << "] "
|
stream << "[" << timestamp << "] "
|
||||||
<< Logger::SeverityToString(entry.Severity) << "/" << entry.Facility << ": "
|
<< Logger::SeverityToString(entry.Severity) << "/" << entry.Facility << ": "
|
||||||
<< entry.Message << std::endl;
|
<< entry.Message << std::endl;
|
||||||
|
|
||||||
|
if (tty)
|
||||||
|
stream << "\x1b[0m"; // clear colors
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -91,6 +110,19 @@ void StreamLogger::ProcessLogEntry(std::ostream& stream, const LogEntry& entry)
|
||||||
*/
|
*/
|
||||||
void StreamLogger::ProcessLogEntry(const LogEntry& entry)
|
void StreamLogger::ProcessLogEntry(const LogEntry& entry)
|
||||||
{
|
{
|
||||||
ProcessLogEntry(*m_Stream, entry);
|
ProcessLogEntry(*m_Stream, m_Tty, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool StreamLogger::IsTty(ostream& stream)
|
||||||
|
{
|
||||||
|
#ifndef _WIN32
|
||||||
|
/* Eww... */
|
||||||
|
if (stream == std::cout)
|
||||||
|
return isatty(fileno(stdout));
|
||||||
|
|
||||||
|
if (stream == std::cerr)
|
||||||
|
return isatty(fileno(stderr));
|
||||||
|
#endif /*_ WIN32 */
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
|
@ -35,12 +35,13 @@ public:
|
||||||
typedef weak_ptr<StreamLogger> WeakPtr;
|
typedef weak_ptr<StreamLogger> WeakPtr;
|
||||||
|
|
||||||
StreamLogger(void);
|
StreamLogger(void);
|
||||||
StreamLogger(std::ostream *stream);
|
StreamLogger(ostream *stream);
|
||||||
~StreamLogger(void);
|
~StreamLogger(void);
|
||||||
|
|
||||||
void OpenFile(const String& filename);
|
void OpenFile(const String& filename);
|
||||||
|
|
||||||
static void ProcessLogEntry(std::ostream& stream, const LogEntry& entry);
|
static void ProcessLogEntry(ostream& stream, bool tty, const LogEntry& entry);
|
||||||
|
static bool IsTty(ostream& stream);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void ProcessLogEntry(const LogEntry& entry);
|
virtual void ProcessLogEntry(const LogEntry& entry);
|
||||||
|
@ -48,6 +49,7 @@ protected:
|
||||||
private:
|
private:
|
||||||
ostream *m_Stream;
|
ostream *m_Stream;
|
||||||
bool m_OwnsStream;
|
bool m_OwnsStream;
|
||||||
|
bool m_Tty;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -252,7 +252,7 @@ void Endpoint::OnAttributeChanged(const String& name, const Value& oldValue)
|
||||||
String subscription;
|
String subscription;
|
||||||
BOOST_FOREACH(tie(tuples::ignore, subscription), newSubscriptions) {
|
BOOST_FOREACH(tie(tuples::ignore, subscription), newSubscriptions) {
|
||||||
if (!oldSubscriptions || !oldSubscriptions->Contains(subscription)) {
|
if (!oldSubscriptions || !oldSubscriptions->Contains(subscription)) {
|
||||||
Logger::Write(LogInformation, "remoting", "New subscription for '" + GetName() + "': " + subscription);
|
Logger::Write(LogDebug, "remoting", "New subscription for '" + GetName() + "': " + subscription);
|
||||||
OnSubscriptionRegistered(GetSelf(), subscription);
|
OnSubscriptionRegistered(GetSelf(), subscription);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue