log: initialize logging earlier

It turns out to be possible to initialize logging earlier by
grabbing the log from a global ngx_cycle structure.

This makes us start logging earlier, yet loses the
"No threading detected ..." messages both from stderr and
in error.log when nginx initially starts.

With this change, these messages will now be logged as we start
logging earlier:

"
flush
.
"

These originate from SystemCachePath::CacheKey which appends
newlines to the key, and the resulting cache key ends up being
logged. We might want to change that, because the resulting
lines in error.log look weird and might raise questions.

Fixes https://github.com/pagespeed/ngx_pagespeed/issues/895
This commit is contained in:
Otto van der Schaaf
2015-12-10 22:04:34 +01:00
parent f88a0763fd
commit 37e1c3618a
3 changed files with 7 additions and 5 deletions
+3 -2
View File
@@ -983,6 +983,7 @@ void* ps_create_main_conf(ngx_conf_t* cf) {
"" /* hostname, not used */, "" /* hostname, not used */,
-1 /* port, not used */); -1 /* port, not used */);
active_driver_factory = cfg_m->driver_factory; active_driver_factory = cfg_m->driver_factory;
active_driver_factory->LoggingInit(ngx_cycle->log, false);
cfg_m->driver_factory->Init(); cfg_m->driver_factory->Init();
ps_set_conf_cleanup_handler(cf, ps_cleanup_main_conf, cfg_m); ps_set_conf_cleanup_handler(cf, ps_cleanup_main_conf, cfg_m);
return cfg_m; return cfg_m;
@@ -3044,7 +3045,7 @@ ngx_int_t ps_init_module(ngx_cycle_t* cycle) {
return NGX_ERROR; return NGX_ERROR;
} }
cfg_m->driver_factory->LoggingInit(cycle->log); cfg_m->driver_factory->LoggingInit(cycle->log, true);
cfg_m->driver_factory->RootInit(); cfg_m->driver_factory->RootInit();
} else { } else {
delete cfg_m->driver_factory; delete cfg_m->driver_factory;
@@ -3076,7 +3077,7 @@ ngx_int_t ps_init_child_process(ngx_cycle_t* cycle) {
// ChildInit() will initialise all ServerContexts, which we need to // ChildInit() will initialise all ServerContexts, which we need to
// create ProxyFetchFactories below // create ProxyFetchFactories below
cfg_m->driver_factory->LoggingInit(cycle->log); cfg_m->driver_factory->LoggingInit(cycle->log, true);
cfg_m->driver_factory->ChildInit(); cfg_m->driver_factory->ChildInit();
ngx_http_core_main_conf_t* cmcf = static_cast<ngx_http_core_main_conf_t*>( ngx_http_core_main_conf_t* cmcf = static_cast<ngx_http_core_main_conf_t*>(
+3 -2
View File
@@ -208,10 +208,11 @@ void NgxRewriteDriverFactory::StartThreads() {
threads_started_ = true; threads_started_ = true;
} }
void NgxRewriteDriverFactory::LoggingInit(ngx_log_t* log) { void NgxRewriteDriverFactory::LoggingInit(
ngx_log_t* log, bool may_install_crash_handler) {
log_ = log; log_ = log;
net_instaweb::log_message_handler::Install(log); net_instaweb::log_message_handler::Install(log);
if (install_crash_handler()) { if (may_install_crash_handler && install_crash_handler()) {
NgxMessageHandler::InstallCrashHandler(log); NgxMessageHandler::InstallCrashHandler(log);
} }
ngx_message_handler_->set_log(log); ngx_message_handler_->set_log(log);
+1 -1
View File
@@ -115,7 +115,7 @@ class NgxRewriteDriverFactory : public SystemRewriteDriverFactory {
return process_script_variables_; return process_script_variables_;
} }
void LoggingInit(ngx_log_t* log); void LoggingInit(ngx_log_t* log, bool may_install_crash_handler);
virtual void ShutDownMessageHandlers(); virtual void ShutDownMessageHandlers();