Browse Source

don't break win32

pull/440/head
Jeff Becker 8 years ago
parent
commit
c4e5a130ee
No known key found for this signature in database
GPG Key ID: AB950234D6EA286B
  1. 10
      Log.cpp
  2. 11
      Log.h

10
Log.cpp

@ -10,7 +10,7 @@ static const char * g_LogLevelStr[eNumLogLevels] =
"info", // eLogInfo "info", // eLogInfo
"debug" // eLogDebug "debug" // eLogDebug
}; };
#ifndef _WIN32
/** convert LogLevel enum to syslog priority level */ /** convert LogLevel enum to syslog priority level */
static int ToSyslogLevel(LogLevel lvl) static int ToSyslogLevel(LogLevel lvl)
{ {
@ -28,15 +28,17 @@ static int ToSyslogLevel(LogLevel lvl)
return LOG_CRIT; return LOG_CRIT;
} }
} }
#endif
void LogMsg::Process() void LogMsg::Process()
{ {
#ifndef _WIN32
if (log && log->SyslogEnabled()) { if (log && log->SyslogEnabled()) {
// only log to syslog // only log to syslog
syslog(ToSyslogLevel(level), "%s", s.str().c_str()); syslog(ToSyslogLevel(level), "%s", s.str().c_str());
return; return;
} }
#endif
auto stream = log ? log->GetLogStream () : nullptr; auto stream = log ? log->GetLogStream () : nullptr;
auto& output = stream ? *stream : std::cout; auto& output = stream ? *stream : std::cout;
if (log) if (log)
@ -111,14 +113,18 @@ void Log::SetLogStream (std::shared_ptr<std::ostream> logStream)
void Log::StartSyslog(const std::string & ident, const int facility) void Log::StartSyslog(const std::string & ident, const int facility)
{ {
#ifndef _WIN32
m_Ident = ident; m_Ident = ident;
openlog(m_Ident.c_str(), LOG_PID, facility); openlog(m_Ident.c_str(), LOG_PID, facility);
#endif
} }
void Log::StopSyslog() void Log::StopSyslog()
{ {
#ifndef _WIN32
closelog(); closelog();
m_Ident.clear(); m_Ident.clear();
#endif
} }
bool Log::SyslogEnabled() bool Log::SyslogEnabled()

11
Log.h

@ -8,9 +8,12 @@
#include <functional> #include <functional>
#include <chrono> #include <chrono>
#include <memory> #include <memory>
#include <syslog.h>
#include "Queue.h" #include "Queue.h"
#ifndef _WIN32
#include <syslog.h>
#endif
enum LogLevel enum LogLevel
{ {
eLogError = 0, eLogError = 0,
@ -48,7 +51,7 @@ class Log: public i2p::util::MsgQueue<LogMsg>
LogLevel GetLogLevel () { return m_MinLevel; }; LogLevel GetLogLevel () { return m_MinLevel; };
const std::string& GetFullFilePath () const { return m_FullFilePath; }; const std::string& GetFullFilePath () const { return m_FullFilePath; };
/** start logging to syslog */ /** start logging to syslog */
void StartSyslog(const std::string & ident, const int facility = LOG_USER); void StartSyslog(const std::string & ident, const int facility);
/** stop logging to syslog */ /** stop logging to syslog */
void StopSyslog(); void StopSyslog();
/** are we logging to syslog right now? */ /** are we logging to syslog right now? */
@ -126,7 +129,9 @@ inline bool IsLogToFile ()
inline void StartSyslog() inline void StartSyslog()
{ {
StartLog(""); StartLog("");
g_Log->StartSyslog("i2pd"); #ifndef _WIN32
g_Log->StartSyslog("i2pd", LOG_USER);
#endif
} }
inline void StopSyslog() inline void StopSyslog()

Loading…
Cancel
Save