71 lines
1.5 KiB
C++
71 lines
1.5 KiB
C++
/*
|
|
* Priority.cpp
|
|
*
|
|
* Copyright 2000, LifeLine Networks BV (www.lifeline.nl). All rights reserved.
|
|
* Copyright 2000, Bastiaan Bakker. All rights reserved.
|
|
*
|
|
* See the COPYING file for the terms of usage and distribution.
|
|
*/
|
|
|
|
#include "PortabilityImpl.hh"
|
|
#include <log4cpp/Priority.hh>
|
|
#include <cstdlib>
|
|
|
|
namespace log4cpp {
|
|
|
|
namespace {
|
|
const std::string *names() {
|
|
static const std::string priority_names[10] = {
|
|
"FATAL",
|
|
"ALERT",
|
|
"CRIT",
|
|
"ERROR",
|
|
"WARN",
|
|
"NOTICE",
|
|
"INFO",
|
|
"DEBUG",
|
|
"NOTSET",
|
|
"UNKNOWN"
|
|
};
|
|
return priority_names;
|
|
}
|
|
}
|
|
|
|
const int log4cpp::Priority::MESSAGE_SIZE = 8;
|
|
|
|
|
|
const std::string& Priority::getPriorityName(int priority) throw() {
|
|
|
|
priority++;
|
|
priority /= 100;
|
|
return names()[((priority < 0) || (priority > 8)) ? 8 : priority];
|
|
}
|
|
|
|
Priority::Value Priority::getPriorityValue(const std::string& priorityName) {
|
|
Priority::Value value = -1;
|
|
|
|
for (unsigned int i = 0; i < 10; i++) {
|
|
if (priorityName == names()[i]) {
|
|
value = i * 100;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (value == -1) {
|
|
if (priorityName == "EMERG") {
|
|
value = 0;
|
|
} else {
|
|
char* endPointer;
|
|
value = std::strtoul(priorityName.c_str(), &endPointer, 10);
|
|
if (*endPointer != 0) {
|
|
throw std::invalid_argument(
|
|
std::string("unknown priority name: '") + priorityName + "'"
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
return value;
|
|
}
|
|
}
|