- added the ability to set the default global severity from scons configure
- initial check in of setting global severity from getenv (todo)
This commit is contained in:
parent
46d45e8496
commit
81c9dd7b6b
3 changed files with 65 additions and 6 deletions
16
SConstruct
16
SConstruct
|
@ -348,6 +348,7 @@ opts.AddVariables(
|
|||
BoolVariable('ENABLE_LOG', 'Enable logging, which is enabled by default when building in *debug*', 'False'),
|
||||
BoolVariable('ENABLE_STATS', 'Enable global statistics during map processing', 'False'),
|
||||
('LOG_FORMAT_STRING', 'The format string used before log output string, piped through strftime (max length of 255 characters)', 'Mapnik LOG> %Y-%m-%d %H:%M:%S:'),
|
||||
('DEFAULT_LOG_SEVERITY', 'The default severity of the logger (eg. "info", "debug", "warn", "error", "fatal", "none")', 'error'),
|
||||
|
||||
# Other variables
|
||||
BoolVariable('SHAPE_MEMORY_MAPPED_FILE', 'Utilize memory-mapped files in Shapefile Plugin (higher memory usage, better performance)', 'True'),
|
||||
|
@ -1417,7 +1418,20 @@ if not preconfigured:
|
|||
ndebug_flags = '-DNDEBUG'
|
||||
|
||||
# Enable logging in debug mode (always) and release mode (when specified)
|
||||
log_enabled = ' -DMAPNIK_LOG -DMAPNIK_LOG_FORMAT="%s"' % env['LOG_FORMAT_STRING']
|
||||
if env['DEFAULT_LOG_SEVERITY']:
|
||||
severities = ['info', 'debug', 'warn', 'error', 'fatal', 'none']
|
||||
if env['DEFAULT_LOG_SEVERITY'] not in severities:
|
||||
color_print(1,"Cannot set default logger severity to '%s', available options are 'info', 'debug', 'warn', 'error', 'fatal', 'none'." % env['DEFAULT_LOG_SEVERITY'])
|
||||
Exit(1)
|
||||
else:
|
||||
log_severity = severities.index(env['DEFAULT_LOG_SEVERITY'])
|
||||
else:
|
||||
if env['DEBUG']:
|
||||
log_severity = 1 # debug
|
||||
else:
|
||||
log_severity = 3 # error
|
||||
|
||||
log_enabled = ' -DMAPNIK_LOG -DMAPNIK_LOG_FORMAT="%s" -DMAPNIK_DEFAULT_LOG_SEVERITY=%d' % (env['LOG_FORMAT_STRING'], log_severity)
|
||||
|
||||
if env['DEBUG']:
|
||||
debug_flags += log_enabled
|
||||
|
|
|
@ -125,6 +125,7 @@ namespace mapnik {
|
|||
format_ = format;
|
||||
}
|
||||
|
||||
// interpolate the format string for output
|
||||
static std::string str();
|
||||
|
||||
// output
|
||||
|
@ -134,7 +135,11 @@ namespace mapnik {
|
|||
private:
|
||||
static severity_type severity_level_;
|
||||
static severity_map object_severity_level_;
|
||||
static bool severity_env_check_;
|
||||
|
||||
static std::string format_;
|
||||
static bool format_env_check_;
|
||||
|
||||
static std::ofstream file_output_;
|
||||
static std::string file_name_;
|
||||
static std::streambuf* saved_buf_;
|
||||
|
|
|
@ -30,21 +30,47 @@
|
|||
#define MAPNIK_LOG_FORMAT "Mapnik LOG> %Y-%m-%d %H:%M:%S:"
|
||||
#endif
|
||||
|
||||
#ifndef MAPNIK_DEFAULT_LOG_SEVERITY
|
||||
#ifdef MAPNIK_DEBUG
|
||||
#define MAPNIK_DEFAULT_LOG_SEVERITY 1
|
||||
#else
|
||||
#define MAPNIK_DEFAULT_LOG_SEVERITY 3
|
||||
#endif
|
||||
#endif
|
||||
|
||||
namespace mapnik {
|
||||
|
||||
// mutexes
|
||||
|
||||
#ifdef MAPNIK_THREADSAFE
|
||||
boost::mutex logger::severity_mutex_;
|
||||
boost::mutex logger::format_mutex_;
|
||||
#endif
|
||||
|
||||
|
||||
// first time checks
|
||||
|
||||
bool logger::severity_env_check_ = true;
|
||||
bool logger::format_env_check_ = true;
|
||||
|
||||
|
||||
// severity
|
||||
|
||||
logger::severity_type logger::severity_level_ =
|
||||
#ifdef MAPNIK_DEBUG
|
||||
#if MAPNIK_DEFAULT_LOG_SEVERITY == 0
|
||||
logger::info
|
||||
#elif MAPNIK_DEFAULT_LOG_SEVERITY == 1
|
||||
logger::debug
|
||||
#else
|
||||
#elif MAPNIK_DEFAULT_LOG_SEVERITY == 2
|
||||
logger::warn
|
||||
#elif MAPNIK_DEFAULT_LOG_SEVERITY == 3
|
||||
logger::error
|
||||
#elif MAPNIK_DEFAULT_LOG_SEVERITY == 4
|
||||
logger::fatal
|
||||
#elif MAPNIK_DEFAULT_LOG_SEVERITY == 5
|
||||
logger::none
|
||||
#else
|
||||
#error "Wrong default log severity level specified!"
|
||||
#endif
|
||||
;
|
||||
|
||||
|
@ -61,6 +87,20 @@ std::string logger::format_ = __xstr__(MAPNIK_LOG_FORMAT);
|
|||
|
||||
std::string logger::str()
|
||||
{
|
||||
#if 0
|
||||
// update the format from getenv if this is the first time
|
||||
if (logger::format_env_check_)
|
||||
{
|
||||
logger::format_env_check_ = false;
|
||||
|
||||
const char* log_format = getenv("MAPNIK_LOG_FORMAT");
|
||||
if (log_format != NULL)
|
||||
{
|
||||
logger::format_ = log_format;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
char buf[256];
|
||||
const time_t tm = time(0);
|
||||
strftime(buf, sizeof(buf), logger::format_.c_str(), localtime(&tm));
|
||||
|
|
Loading…
Reference in a new issue