-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: make headers self-contained (#1030)
- Loading branch information
Showing
24 changed files
with
705 additions
and
349 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
// Copyright (c) 2024, Google Inc. | ||
// All rights reserved. | ||
// | ||
// Redistribution and use in source and binary forms, with or without | ||
// modification, are permitted provided that the following conditions are | ||
// met: | ||
// | ||
// * Redistributions of source code must retain the above copyright | ||
// notice, this list of conditions and the following disclaimer. | ||
// * Redistributions in binary form must reproduce the above | ||
// copyright notice, this list of conditions and the following disclaimer | ||
// in the documentation and/or other materials provided with the | ||
// distribution. | ||
// * Neither the name of Google Inc. nor the names of its | ||
// contributors may be used to endorse or promote products derived from | ||
// this software without specific prior written permission. | ||
// | ||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
// | ||
|
||
#include "glog/flags.h" | ||
|
||
#include <cstdlib> | ||
#include <cstring> | ||
|
||
#include "base/commandlineflags.h" | ||
#include "glog/log_severity.h" | ||
|
||
namespace { | ||
|
||
// Compute the default value for --log_dir | ||
static const char* DefaultLogDir() { | ||
constexpr const char* const names[]{"GOOGLE_LOG_DIR", "TEST_TMPDIR"}; | ||
for (const char* const name : names) { | ||
const char* const env = std::getenv(name); | ||
if (env != nullptr && env[0] != '\0') { | ||
return env; | ||
} | ||
} | ||
return ""; | ||
} | ||
|
||
bool BoolFromEnv(const char* varname, bool defval) { | ||
const char* const valstr = getenv(varname); | ||
if (!valstr) { | ||
return defval; | ||
} | ||
return std::memchr("tTyY1\0", valstr[0], 6) != nullptr; | ||
} | ||
|
||
} // namespace | ||
|
||
GLOG_DEFINE_bool(timestamp_in_logfile_name, | ||
BoolFromEnv("GOOGLE_TIMESTAMP_IN_LOGFILE_NAME", true), | ||
"put a timestamp at the end of the log file name"); | ||
GLOG_DEFINE_bool(logtostderr, BoolFromEnv("GOOGLE_LOGTOSTDERR", false), | ||
"log messages go to stderr instead of logfiles"); | ||
GLOG_DEFINE_bool(alsologtostderr, BoolFromEnv("GOOGLE_ALSOLOGTOSTDERR", false), | ||
"log messages go to stderr in addition to logfiles"); | ||
GLOG_DEFINE_bool(colorlogtostderr, false, | ||
"color messages logged to stderr (if supported by terminal)"); | ||
GLOG_DEFINE_bool(colorlogtostdout, false, | ||
"color messages logged to stdout (if supported by terminal)"); | ||
GLOG_DEFINE_bool(logtostdout, BoolFromEnv("GOOGLE_LOGTOSTDOUT", false), | ||
"log messages go to stdout instead of logfiles"); | ||
#ifdef GLOG_OS_LINUX | ||
GLOG_DEFINE_bool( | ||
drop_log_memory, true, | ||
"Drop in-memory buffers of log contents. " | ||
"Logs can grow very quickly and they are rarely read before they " | ||
"need to be evicted from memory. Instead, drop them from memory " | ||
"as soon as they are flushed to disk."); | ||
#endif | ||
|
||
// By default, errors (including fatal errors) get logged to stderr as | ||
// well as the file. | ||
// | ||
// The default is ERROR instead of FATAL so that users can see problems | ||
// when they run a program without having to look in another file. | ||
DEFINE_int32(stderrthreshold, google::GLOG_ERROR, | ||
"log messages at or above this level are copied to stderr in " | ||
"addition to logfiles. This flag obsoletes --alsologtostderr."); | ||
|
||
GLOG_DEFINE_string(alsologtoemail, "", | ||
"log messages go to these email addresses " | ||
"in addition to logfiles"); | ||
GLOG_DEFINE_bool(log_file_header, true, | ||
"Write the file header at the start of each log file"); | ||
GLOG_DEFINE_bool(log_prefix, true, | ||
"Prepend the log prefix to the start of each log line"); | ||
GLOG_DEFINE_bool(log_year_in_prefix, true, | ||
"Include the year in the log prefix"); | ||
GLOG_DEFINE_int32(minloglevel, 0, | ||
"Messages logged at a lower level than this don't " | ||
"actually get logged anywhere"); | ||
GLOG_DEFINE_int32(logbuflevel, 0, | ||
"Buffer log messages logged at this level or lower" | ||
" (-1 means don't buffer; 0 means buffer INFO only;" | ||
" ...)"); | ||
GLOG_DEFINE_int32(logbufsecs, 30, | ||
"Buffer log messages for at most this many seconds"); | ||
|
||
GLOG_DEFINE_int32(logcleansecs, 60 * 5, // every 5 minutes | ||
"Clean overdue logs every this many seconds"); | ||
|
||
GLOG_DEFINE_int32(logemaillevel, 999, | ||
"Email log messages logged at this level or higher" | ||
" (0 means email all; 3 means email FATAL only;" | ||
" ...)"); | ||
GLOG_DEFINE_string(logmailer, "", "Mailer used to send logging email"); | ||
|
||
GLOG_DEFINE_int32(logfile_mode, 0664, "Log file mode/permissions."); | ||
|
||
GLOG_DEFINE_string( | ||
log_dir, DefaultLogDir(), | ||
"If specified, logfiles are written into this directory instead " | ||
"of the default logging directory."); | ||
GLOG_DEFINE_string(log_link, "", | ||
"Put additional links to the log " | ||
"files in this directory"); | ||
|
||
GLOG_DEFINE_uint32(max_log_size, 1800, | ||
"approx. maximum log file size (in MB). A value of 0 will " | ||
"be silently overridden to 1."); | ||
|
||
GLOG_DEFINE_bool(stop_logging_if_full_disk, false, | ||
"Stop attempting to log to disk if the disk is full."); | ||
|
||
GLOG_DEFINE_string(log_backtrace_at, "", | ||
"Emit a backtrace when logging at file:linenum."); | ||
|
||
GLOG_DEFINE_bool(log_utc_time, false, "Use UTC time for logging."); | ||
|
||
GLOG_DEFINE_int32(v, 0, | ||
"Show all VLOG(m) messages for m <= this." | ||
" Overridable by --vmodule."); | ||
|
||
GLOG_DEFINE_string( | ||
vmodule, "", | ||
"per-module verbose level." | ||
" Argument is a comma-separated list of <module name>=<log level>." | ||
" <module name> is a glob pattern, matched against the filename base" | ||
" (that is, name ignoring .cc/.h./-inl.h)." | ||
" <log level> overrides any value given by --v."); | ||
|
||
GLOG_DEFINE_bool(symbolize_stacktrace, true, | ||
"Symbolize the stack trace in the tombstone"); |
Oops, something went wrong.