-
Notifications
You must be signed in to change notification settings - Fork 165
Expand file tree
/
Copy pathmapnik_logger.cpp
More file actions
88 lines (80 loc) · 2.74 KB
/
mapnik_logger.cpp
File metadata and controls
88 lines (80 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//#include "utils.hpp"
#include "mapnik_logger.hpp"
#include <mapnik/debug.hpp>
Napi::FunctionReference Logger::constructor;
Napi::Object Logger::Initialize(Napi::Env env, Napi::Object exports, napi_property_attributes prop_attr)
{
// clang-format off
Napi::Function func = DefineClass(env, "Logger", {
StaticMethod<&Logger::get_severity>("getSeverity", prop_attr),
StaticMethod<&Logger::set_severity>("setSeverity", prop_attr),
StaticValue("NONE", Napi::Number::New(env, mapnik::logger::severity_type::none), napi_enumerable),
StaticValue("ERROR", Napi::Number::New(env, mapnik::logger::severity_type::error), napi_enumerable),
StaticValue("DEBUG", Napi::Number::New(env, mapnik::logger::severity_type::debug), napi_enumerable),
StaticValue("WARN", Napi::Number::New(env, mapnik::logger::severity_type::warn), napi_enumerable)
});
// clang-format on
// What about booleans like:
// ENABLE_STATS
// ENABLE_LOG
// DEFAULT_LOG_SEVERITY
// RENDERING_STATS
// DEBUG
constructor = Napi::Persistent(func);
constructor.SuppressDestruct();
exports.Set("Logger", func);
return exports;
}
/**
* **`mapnik.Logger`**
*
* No constructor - Severity level is only available via `mapnik.Logger` static instance.
*
* @class Logger
* @example
* mapnik.Logger.setSeverity(mapnik.Logger.NONE);
* var log = mapnik.Logger.get_severity();
* console.log(log); // 3
*/
Logger::Logger(Napi::CallbackInfo const& info)
: Napi::ObjectWrap<Logger>(info)
{
Napi::Env env = info.Env();
Napi::Error::New(env, "a mapnik.Logger cannot be created directly - rather you should ....").ThrowAsJavaScriptException();
}
/**
* Returns integer which represents severity level
* @name get_severity
* @memberof Logger
* @static
* @returns {number} severity level
*/
Napi::Value Logger::get_severity(Napi::CallbackInfo const& info)
{
Napi::Env env = info.Env();
int severity = mapnik::logger::instance().get_severity();
return Napi::Number::New(env, severity);
}
/**
* Accepts level of severity as a mapnik constant
*
* Available security levels
*
* @name set_severity
* @memberof Logger
* @static
* @param {number} severity - severity level
* @returns {number} severity level
*/
Napi::Value Logger::set_severity(Napi::CallbackInfo const& info)
{
Napi::Env env = info.Env();
if (info.Length() != 1 || !info[0].IsNumber())
{
Napi::TypeError::New(env, "requires a severity level parameter").ThrowAsJavaScriptException();
return env.Undefined();
}
int severity = info[0].As<Napi::Number>().Int32Value();
mapnik::logger::instance().set_severity(static_cast<mapnik::logger::severity_type>(severity));
return env.Undefined();
}