Merge pull request #1356 from nghttp2/fix-log-level-on-reload

nghttpx: Fix unchanged log level on configuration reload
This commit is contained in:
Tatsuhiro Tsujikawa 2019-06-07 23:36:49 +09:00 committed by GitHub
commit a1556fd11f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 14 additions and 6 deletions

View File

@ -1559,6 +1559,7 @@ void fill_default_config(Config *config) {
} }
loggingconf.syslog_facility = LOG_DAEMON; loggingconf.syslog_facility = LOG_DAEMON;
loggingconf.severity = NOTICE;
auto &connconf = config->conn; auto &connconf = config->conn;
{ {
@ -3201,6 +3202,7 @@ void reload_config(WorkerProcess *wp) {
// configuration can be obtained from get_config(). // configuration can be obtained from get_config().
auto old_config = replace_config(std::move(new_config)); auto old_config = replace_config(std::move(new_config));
Log::set_severity_level(get_config()->logging.severity);
auto pid = fork_worker_process(ipc_fd, iaddrs); auto pid = fork_worker_process(ipc_fd, iaddrs);
@ -3208,6 +3210,7 @@ void reload_config(WorkerProcess *wp) {
LOG(ERROR) << "Failed to process new configuration"; LOG(ERROR) << "Failed to process new configuration";
new_config = replace_config(std::move(old_config)); new_config = replace_config(std::move(old_config));
Log::set_severity_level(get_config()->logging.severity);
close_not_inherited_fd(new_config.get(), iaddrs); close_not_inherited_fd(new_config.get(), iaddrs);
return; return;

View File

@ -2682,13 +2682,16 @@ int parse_config(Config *config, int optid, const StringRef &opt,
return 0; return 0;
} }
case SHRPX_OPTID_LOG_LEVEL: case SHRPX_OPTID_LOG_LEVEL: {
if (Log::set_severity_level_by_name(optarg) == -1) { auto level = Log::get_severity_level_by_name(optarg);
if (level == -1) {
LOG(ERROR) << opt << ": Invalid severity level: " << optarg; LOG(ERROR) << opt << ": Invalid severity level: " << optarg;
return -1; return -1;
} }
config->logging.severity = level;
return 0; return 0;
}
case SHRPX_OPTID_DAEMON: case SHRPX_OPTID_DAEMON:
config->daemon = util::strieq_l("yes", optarg); config->daemon = util::strieq_l("yes", optarg);

View File

@ -808,6 +808,7 @@ struct LoggingConfig {
bool syslog; bool syslog;
} error; } error;
int syslog_facility; int syslog_facility;
int severity;
}; };
struct RateLimitConfig { struct RateLimitConfig {

View File

@ -116,11 +116,10 @@ int Log::severity_thres_ = NOTICE;
void Log::set_severity_level(int severity) { severity_thres_ = severity; } void Log::set_severity_level(int severity) { severity_thres_ = severity; }
int Log::set_severity_level_by_name(const StringRef &name) { int Log::get_severity_level_by_name(const StringRef &name) {
for (size_t i = 0, max = array_size(SEVERITY_STR); i < max; ++i) { for (size_t i = 0, max = array_size(SEVERITY_STR); i < max; ++i) {
if (name == SEVERITY_STR[i]) { if (name == SEVERITY_STR[i]) {
severity_thres_ = i; return i;
return 0;
} }
} }
return -1; return -1;

View File

@ -180,7 +180,9 @@ public:
} }
} }
static void set_severity_level(int severity); static void set_severity_level(int severity);
static int set_severity_level_by_name(const StringRef &name); // Returns the severity level by |name|. Returns -1 if |name| is
// unknown.
static int get_severity_level_by_name(const StringRef &name);
static bool log_enabled(int severity) { return severity >= severity_thres_; } static bool log_enabled(int severity) { return severity >= severity_thres_; }
enum { enum {