mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-06 12:58:18 +03:00
Feature #1658: Add SysLogResource class and refactor
This commit is contained in:
parent
2e487cdbbc
commit
32f8098f8b
@ -20,6 +20,8 @@
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
|
||||
#include "PoolObjectSQL.h"
|
||||
|
||||
#include "log4cpp/Priority.hh"
|
||||
|
||||
using namespace std;
|
||||
@ -139,7 +141,6 @@ public:
|
||||
const char * message);
|
||||
};
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
@ -149,16 +150,51 @@ public:
|
||||
class SysLog : public Log
|
||||
{
|
||||
public:
|
||||
SysLog(const MessageType level = WARNING);
|
||||
SysLog(const MessageType level = WARNING):Log(level){};
|
||||
|
||||
~SysLog();
|
||||
~SysLog() {};
|
||||
|
||||
virtual void log(
|
||||
const char * module,
|
||||
const MessageType type,
|
||||
const char * message);
|
||||
|
||||
static void init(
|
||||
Log::MessageType clevel,
|
||||
string name,
|
||||
string label);
|
||||
|
||||
static log4cpp::Priority::PriorityLevel get_priority_level(
|
||||
const MessageType level);
|
||||
};
|
||||
|
||||
/**
|
||||
* Send log messages to syslog per resource
|
||||
*/
|
||||
class SysLogResource : public SysLog
|
||||
{
|
||||
public:
|
||||
SysLogResource(
|
||||
int oid,
|
||||
const PoolObjectSQL::ObjectType obj_type,
|
||||
const MessageType clevel);
|
||||
|
||||
~SysLogResource(){};
|
||||
|
||||
void log(
|
||||
const char * module,
|
||||
const MessageType type,
|
||||
const char * message);
|
||||
protected:
|
||||
log4cpp::Priority::PriorityLevel get_priority_level(const MessageType level);
|
||||
|
||||
static void init(
|
||||
Log::MessageType clevel,
|
||||
string name,
|
||||
string label);
|
||||
|
||||
static string name;
|
||||
|
||||
private:
|
||||
string obj_label;
|
||||
};
|
||||
|
||||
#endif /* _LOG_H_ */
|
||||
|
@ -18,8 +18,19 @@
|
||||
#define _NEBULA_LOG_H_
|
||||
|
||||
#include "Log.h"
|
||||
|
||||
#include <sstream>
|
||||
|
||||
#include <syslog.h>
|
||||
|
||||
//#include "log4cpp/Category.hh"
|
||||
//#include "log4cpp/CategoryStream.hh"
|
||||
//#include "log4cpp/Appender.hh"
|
||||
//#include "log4cpp/SyslogAppender.hh"
|
||||
//#include "log4cpp/Layout.hh"
|
||||
//#include "log4cpp/SimpleLayout.hh"
|
||||
//#include "log4cpp/Priority.hh"
|
||||
|
||||
using namespace std;
|
||||
|
||||
/**
|
||||
@ -61,7 +72,12 @@ public:
|
||||
|
||||
static void init_syslog_system(Log::MessageType clevel)
|
||||
{
|
||||
// Initialize the 'root' syslog logger
|
||||
SysLog::init(clevel, "root", "OpenNebula");
|
||||
NebulaLog::logger = new SysLog(clevel);
|
||||
|
||||
// Initialize the 'resource' syslog logger
|
||||
SysLogResource::init(clevel, "resource", "OpenNebula");
|
||||
};
|
||||
|
||||
static void finalize_log_system()
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include <stdexcept>
|
||||
#include <sstream>
|
||||
#include <iostream>
|
||||
|
||||
#include <syslog.h>
|
||||
|
||||
#include "log4cpp/Category.hh"
|
||||
@ -154,24 +155,18 @@ void CerrLog::log(
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
SysLog::SysLog(const MessageType level):Log(level) {
|
||||
|
||||
log4cpp::Appender *syslog_appender = new log4cpp::SyslogAppender(
|
||||
"syslog", "OpenNebula", LOG_DAEMON);
|
||||
|
||||
void SysLog::init(
|
||||
Log::MessageType clevel,
|
||||
string name,
|
||||
string label)
|
||||
{
|
||||
log4cpp::Appender *syslog_appender;
|
||||
syslog_appender = new log4cpp::SyslogAppender(name,label,LOG_DAEMON);
|
||||
syslog_appender->setLayout(new log4cpp::SimpleLayout());
|
||||
|
||||
log4cpp::Category& root = log4cpp::Category::getRoot();
|
||||
|
||||
root.setPriority(get_priority_level(level));
|
||||
|
||||
root.setPriority(SysLog::get_priority_level(clevel));
|
||||
root.addAppender(syslog_appender);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
SysLog::~SysLog() {}
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
@ -183,13 +178,17 @@ void SysLog::log(
|
||||
{
|
||||
log4cpp::Category& root = log4cpp::Category::getRoot();
|
||||
|
||||
root << get_priority_level(type) << "[" << module << "]"
|
||||
<< "[" << error_names[type] << "]: "
|
||||
<< message;
|
||||
log4cpp::Priority::PriorityLevel level = get_priority_level(type);
|
||||
|
||||
root << level << "[" << module << "] "
|
||||
<< message;
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
log4cpp::Priority::PriorityLevel SysLog::get_priority_level(
|
||||
const MessageType level)
|
||||
const MessageType level)
|
||||
{
|
||||
log4cpp::Priority::PriorityLevel priority_level;
|
||||
|
||||
@ -220,3 +219,61 @@ log4cpp::Priority::PriorityLevel SysLog::get_priority_level(
|
||||
|
||||
return priority_level;
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
string SysLogResource::name;
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
void SysLogResource::init(
|
||||
Log::MessageType clevel,
|
||||
string name,
|
||||
string label)
|
||||
{
|
||||
SysLogResource::name = name;
|
||||
|
||||
log4cpp::Appender *resource_appender;
|
||||
resource_appender = new log4cpp::SyslogAppender(name,label,LOG_DAEMON);
|
||||
|
||||
resource_appender->setLayout(new log4cpp::SimpleLayout());
|
||||
log4cpp::Category& res = log4cpp::Category::getInstance(name);
|
||||
res.addAppender(resource_appender);
|
||||
res.setPriority(SysLog::get_priority_level(clevel));
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
SysLogResource::SysLogResource(
|
||||
int oid,
|
||||
const PoolObjectSQL::ObjectType obj_type,
|
||||
const MessageType clevel = WARNING)
|
||||
:SysLog(clevel)
|
||||
{
|
||||
ostringstream oss_label;
|
||||
string obj_type_str = PoolObjectSQL::type_to_str(obj_type);
|
||||
|
||||
oss_label << "[" << obj_type_str << " " << oid << "]: ";
|
||||
obj_label = oss_label.str();
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
void SysLogResource::log(
|
||||
const char * module,
|
||||
const MessageType type,
|
||||
const char * message)
|
||||
{
|
||||
log4cpp::Category& res = log4cpp::Category::getInstance(
|
||||
SysLogResource::name);
|
||||
|
||||
log4cpp::Priority::PriorityLevel level = get_priority_level(type);
|
||||
|
||||
res << level << "[THISISAVM] "
|
||||
<< message;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user