Merge branch 'nghttpx-new-errorlog-format'
This commit is contained in:
commit
e9cb19c80e
|
@ -41,6 +41,33 @@ FILES
|
||||||
:option:`--conf` option cannot be used in the configuration file and
|
:option:`--conf` option cannot be used in the configuration file and
|
||||||
will be ignored if specified.
|
will be ignored if specified.
|
||||||
|
|
||||||
|
Error log
|
||||||
|
Error log is written to stderr by default. It can be configured
|
||||||
|
using :option:`--errorlog-file`. The format of log message is as
|
||||||
|
follows:
|
||||||
|
|
||||||
|
<datetime> <master-pid> <current-pid> <thread-id> <level> (<filename>:<line>) <msg>
|
||||||
|
|
||||||
|
<datetime>
|
||||||
|
It is a conbination of date and time when the log is written. It
|
||||||
|
is in ISO 8601 format.
|
||||||
|
|
||||||
|
<master-pid>
|
||||||
|
It is a master process ID.
|
||||||
|
|
||||||
|
<current-pid>
|
||||||
|
It is a process ID which writes this log.
|
||||||
|
|
||||||
|
<thread-id>
|
||||||
|
It is a thread ID which writes this log. It would be unique
|
||||||
|
within <current-pid>.
|
||||||
|
|
||||||
|
<filename> and <line>
|
||||||
|
They are source file name, and line number which produce this log.
|
||||||
|
|
||||||
|
<msg>
|
||||||
|
It is a log message body.
|
||||||
|
|
||||||
SIGNALS
|
SIGNALS
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|
|
@ -138,22 +138,14 @@ Log::~Log() {
|
||||||
auto tty = lgconf->errorlog_tty;
|
auto tty = lgconf->errorlog_tty;
|
||||||
|
|
||||||
lgconf->update_tstamp(std::chrono::system_clock::now());
|
lgconf->update_tstamp(std::chrono::system_clock::now());
|
||||||
auto &time_local = lgconf->time_local;
|
|
||||||
|
|
||||||
if (severity_ == NOTICE) {
|
// Error log format: <datetime> <master-pid> <current-pid>
|
||||||
rv =
|
// <thread-id> <level> (<filename>:<line>) <msg>
|
||||||
snprintf(buf, sizeof(buf), "%s PID%d [%s%s%s] %s\n", time_local.c_str(),
|
rv = snprintf(buf, sizeof(buf), "%s %d %d %s %s%s%s (%s:%d) %s\n",
|
||||||
config->pid, tty ? SEVERITY_COLOR[severity_] : "",
|
lgconf->time_iso8601.c_str(), config->pid, lgconf->pid,
|
||||||
SEVERITY_STR[severity_].c_str(), tty ? "\033[0m" : "",
|
lgconf->thread_id.c_str(), tty ? SEVERITY_COLOR[severity_] : "",
|
||||||
stream_.str().c_str());
|
SEVERITY_STR[severity_].c_str(), tty ? "\033[0m" : "",
|
||||||
} else {
|
filename_, linenum_, stream_.str().c_str());
|
||||||
rv = snprintf(buf, sizeof(buf), "%s PID%d [%s%s%s] %s%s:%d%s %s\n",
|
|
||||||
time_local.c_str(), config->pid,
|
|
||||||
tty ? SEVERITY_COLOR[severity_] : "",
|
|
||||||
SEVERITY_STR[severity_].c_str(), tty ? "\033[0m" : "",
|
|
||||||
tty ? "\033[1;30m" : "", filename_, linenum_,
|
|
||||||
tty ? "\033[0m" : "", stream_.str().c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rv < 0) {
|
if (rv < 0) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -23,6 +23,12 @@
|
||||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
#include "shrpx_log_config.h"
|
#include "shrpx_log_config.h"
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <thread>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
using namespace nghttp2;
|
using namespace nghttp2;
|
||||||
|
@ -30,7 +36,14 @@ using namespace nghttp2;
|
||||||
namespace shrpx {
|
namespace shrpx {
|
||||||
|
|
||||||
LogConfig::LogConfig()
|
LogConfig::LogConfig()
|
||||||
: accesslog_fd(-1), errorlog_fd(-1), errorlog_tty(false) {}
|
: pid(getpid()), accesslog_fd(-1), errorlog_fd(-1), errorlog_tty(false) {
|
||||||
|
auto tid = std::this_thread::get_id();
|
||||||
|
auto tid_hash =
|
||||||
|
util::hash32(StringRef{reinterpret_cast<uint8_t *>(&tid),
|
||||||
|
reinterpret_cast<uint8_t *>(&tid) + sizeof(tid)});
|
||||||
|
thread_id = util::format_hex(reinterpret_cast<uint8_t *>(&tid_hash),
|
||||||
|
sizeof(tid_hash));
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef NOTHREADS
|
#ifndef NOTHREADS
|
||||||
#ifdef HAVE_THREAD_LOCAL
|
#ifdef HAVE_THREAD_LOCAL
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
|
|
||||||
#include "shrpx.h"
|
#include "shrpx.h"
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|
||||||
#include "template.h"
|
#include "template.h"
|
||||||
|
@ -40,9 +42,11 @@ struct LogConfig {
|
||||||
std::array<char, sizeof("03/Jul/2014:00:19:38 +0900")> time_local_buf;
|
std::array<char, sizeof("03/Jul/2014:00:19:38 +0900")> time_local_buf;
|
||||||
std::array<char, sizeof("2014-11-15T12:58:24.741+09:00")> time_iso8601_buf;
|
std::array<char, sizeof("2014-11-15T12:58:24.741+09:00")> time_iso8601_buf;
|
||||||
std::array<char, sizeof("Mon, 10 Oct 2016 10:25:58 GMT")> time_http_buf;
|
std::array<char, sizeof("Mon, 10 Oct 2016 10:25:58 GMT")> time_http_buf;
|
||||||
|
std::string thread_id;
|
||||||
StringRef time_local;
|
StringRef time_local;
|
||||||
StringRef time_iso8601;
|
StringRef time_iso8601;
|
||||||
StringRef time_http;
|
StringRef time_http;
|
||||||
|
pid_t pid;
|
||||||
int accesslog_fd;
|
int accesslog_fd;
|
||||||
int errorlog_fd;
|
int errorlog_fd;
|
||||||
// true if errorlog_fd is referring to a terminal.
|
// true if errorlog_fd is referring to a terminal.
|
||||||
|
|
Loading…
Reference in New Issue