Commit Graph

82 Commits

Author SHA1 Message Date
Sergiu Deitsch
25a349f7ae
feat(time): use tm::tm_gmtoff if present (#1040)
This greatly simplifies time computations.
2024-01-06 02:56:23 +01:00
Sergiu Deitsch
eb72e4c181
feat(logger): use chrono (#1039) 2024-01-05 23:07:49 +01:00
Sergiu Deitsch
8775a454c1
feat: make headers self-contained (#1030) 2024-01-04 21:03:55 +01:00
Sergiu Deitsch
54b2c17172
fix: make log severity type safe (#1025) 2024-01-04 00:35:40 +01:00
Sergiu Deitsch
0032896711
feat: use standard threads (#1019) 2024-01-03 02:24:52 +01:00
Sergiu Deitsch
45d7978daf
fix(tests): prevent clang from optimizing new away (#1017) 2024-01-02 13:01:42 +01:00
Sergiu Deitsch
8ff1a7db04
feat: use standard mutexes (#1015) 2024-01-02 00:47:22 +01:00
Sergiu Deitsch
93549f3600 chore: apply clang-format 2023-12-30 20:38:56 +01:00
Sergiu Deitsch
e3f5398aa1
rework public header structure (#1012)
Promote generated headers to regular headers. This enables direct
editing of corresponding files and running automatic source code
formatting and static analysis tools, such as clang-format and
clang-tidy on the whole project which previously was not
straightforward.
2023-12-30 19:05:26 +01:00
Sergiu Deitsch
3fcf77a691
fix: drop custom (v)snprintf definition (#992)
The functions are available since C++11.
2023-12-20 20:49:08 +01:00
Sergiu Deitsch
a9eecd7f9a
fix: log last error code instead of a BOOL (#994) 2023-12-20 20:47:57 +01:00
Sergiu Deitsch
615966eb6d
fix: prefer includes in same directory (#969)
Use quoted form instead of angle-bracket form for includes to avoid
conflicts between multiple versions of the library.
2023-10-07 20:15:29 +02:00
Sergiu Deitsch
4a75a9df7c
fix: eliminate type conversion warnings 2023-10-07 16:14:21 +02:00
Philipp Wollermann
64827572c0
SendEmail: Protect users against vulnerable logmailers (#939)
glog is used on a variety of systems, and we must assume that some of
them still use vulnerable mailers that have bugs or "interesting
features" such as https://nvd.nist.gov/vuln/detail/CVE-2004-2771.

Let's protect users against accidental shell injection by validating
the email addresses against a slightly stricter version of the regex
used by HTML5 to validate addresses[1].

This should prevent triggering any unexpected behavior in these tools.

Also add some basic unit tests for the SendEmail method.

[1] https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
2023-09-07 17:31:25 +02:00
Vertexwahn
4945347d07 Fix spelling mistakes 2023-05-25 20:51:51 +02:00
Sergiu Deitsch
6742834201
move to C++14 (#902) 2023-02-28 12:26:49 +01:00
Sergiu Deitsch
1b59cb0905
drop custom prefix option (#898) 2023-02-24 20:40:09 +01:00
Andrei Polushin
6d5b384507
SetLogger should delete previously set custom logger. (#853)
As specified in the doc comment for SetLogger, "the logger becomes the
property of the logging module and should not be deleted by the caller".

Not only should the LogDestination delete a custom logger in its
destructor, but it should also delete a previous logger when another
logger is passed to SetLogger().

Co-authored-by: Sergiu Deitsch <sergiud@users.noreply.github.com>
2022-08-13 12:20:33 +02:00
Sergiu Deitsch
a8e0007e96
Merge pull request #790 from git-hulk/feature/logs-to-stdout
Add the logtostdout and colorlogtostdout flag to allow logging to stdout
2022-02-20 12:32:06 +01:00
Arfrever Frehtes Taifersar Arahesis
6d3f70a405 Pass EXIT_SUCCESS or EXIT_FAILURE to exit() and _exit() 2022-02-19 20:07:23 +01:00
git-hulk
180b700ddc Add logtostdout and colorlogtostdout flags for logging to stdout
Currently, glog allows to use of logtostderr to send error logs to
stderr, but many log tailers would regard logs from stderr as error
logs. So we want to send non-error logs to stdout and only send error
logs to stderr according to the stderrthreshold.
2022-02-19 16:13:59 +01:00
Sergiu Deitsch
aa94e6b9ab simplify flags export 2022-02-13 13:04:24 +01:00
Sergiu Deitsch
b3abfaa123 use uint32 for --max-log-size 2021-12-29 23:15:17 +01:00
Sergiu Deitsch
087ad5bf32 eliminated clang warnings 2021-12-21 11:37:49 +01:00
Sergiu Deitsch
9dc1107f88 run clang-tidy 2021-12-15 12:04:34 +01:00
Vijaymahantesh Sattigeri
ef36f800ed Added an API to get GMT offset from LogMessageTime
* Added API to get GMT offset
    * Made LogMessageTime as a memeber of LogMessage
    * Refactored LogSink::send() method
2021-12-09 10:26:47 +01:00
Sergiu Deitsch
f4dd77ae6b ci: reworked windows builds 2021-12-06 19:00:41 +01:00
Johannes Meyer
33696664cb
restore the stream format after writing the log prefix (#731)
* Fix MungeLine() for log lines that are longer than 5 characters
* Match order of log statements in logging_unittest.cc and logging_unittest.err
* Update logging_custom_prefix_unittest.cc and logging_custom_prefix_unittest.err to match logging_unittest.cc and logging_unittest.err
* Save the stream state and set the fill character before calling into a custom_prefix_callback
2021-11-05 22:29:36 +01:00
Sergiu Deitsch
4a55b11580 ci: added linux github workflow 2021-10-11 15:54:42 +02:00
Sergiu Deitsch
8474b7854b added gmock support 2021-10-07 19:53:08 +02:00
Sergiu Deitsch
f7407d4d27 export OS_* defines (fixes #715) 2021-10-01 11:26:07 +02:00
Sergiu Deitsch
0b83bb203d eliminate warnings 2021-07-22 22:52:22 +02:00
Sergiu Deitsch
c39fcf6e8a ci: added more targets 2021-07-14 02:21:58 +02:00
Dmitriy A
a1374c4200 Implement LOG_EVERY_T.
Use <chrono> and <atomic> for C++11 or greater.
For non-Windows pre-C++11 systems, use <time.h> and built-in atomic operations.
For Windows pre-C++11, use the Windows implementations for time and atomic operations.
2021-07-05 07:25:12 -07:00
Roman Gershman
86fea1ab25 Allow updating vmodule levels after vmodule was parsed, invalidate already cached site flags
vmodule flag is relevant for GNUC environments only.
2021-05-23 19:38:22 +03:00
Tongliang Liao
81e0d616ed Expose IsGoogleLoggingInitialized() in public API.
Usually library does not have control of the process lifespan.
Without this function, it is impossible to init/shutdown reliably.
It has been one of the major pain points for years when using glog in libraries.

AFAIK 3 workarounds have been used previously:
1. Init without checking. This causes compatiblity issues with other libs using glog.
2. Also provide a init function in library's API. This makes API complicated and stateful, especially for libs that does not mean to stay for the entire life of process.
3. Steal the utility function in internal namespace. Does not work with msvc (due to missing dllexport) or `gcc -fvisibility=hidden`.

None of them are perfect, except for the last hack that usually works well on Linux.
0.5.0 changes default visibility to hidden and it does not work anymore.

Resolve https://github.com/google/glog/issues/125
2021-05-14 08:57:32 +08:00
Sergiu Deitsch
efc341d768 fixed windows builds 2021-04-08 18:16:42 +02:00
Sergiu Deitsch
01f3e543e3 use C++ headers 2021-03-31 02:24:22 +02:00
Alex Stewart
0a6704b439 Fix missing deletion of custom Logger
- If the user specifies a custom Logger via SetLogger(), the docs state
  that the logging module takes ownership of it.  Prior to this change,
  the logging library was not deleting a custom logger when the
  LogDestination which owns it was destroyed.
2019-12-02 16:55:08 +00:00
Ezequiel Lara Gomez
58d7f873dc Added fixed log name support, take 2 (#489)
* Added fixed log name support, take 2

See https://code.google.com/p/google-glog/issues/detail?id=209 and former https://github.com/google/glog/pull/19 - this is an updated version of that patch.

It adds a flag that allows to switch behavior from base_filename + filename_extension + time_pid_string to base_filename + filename_extension, while still defaulting to the current behavior to avoid breakage in existing code. This change would allow easier log rotation schemes and better control on what's written on disk.

* Ifdef away fcntl on mingw

* Use the defined HAVE_FCNTL instead

* ifdef away tests as well

add have_sys_wait for wait() on mingw.

* OS_WINDOWS bug in fseeking to the end, only triggered here
2019-11-06 12:49:01 +01:00
Sergiu Deitsch
15fb5ca5b6
Revert "Added fixed log name support" 2019-11-01 12:01:41 +01:00
Sergiu Deitsch
5792d60d68
Merge pull request #441 from asekretenko/useconds
Extend the LogSink interface to be able to pass microseconds
2019-10-31 23:43:50 +01:00
Sergiu Deitsch
44f6079fad
Merge pull request #19 from ezegomez/master
Added fixed log name support
2019-10-31 23:40:55 +01:00
Sergiu Deitsch
e558d50b0a
Merge pull request #370 from hemantbits/patch-1
Fix warnings
2019-10-31 22:44:48 +01:00
Andrei Sekretenko
94a54120de Extended the LogSink interface to be able to pass microseconds. 2019-03-27 18:27:31 +01:00
Shinichiro Hamaji
7f91846ca1 Stop using auto_ptr (#428)
Stop using auto_ptr

std::unique_ptr requires -std=c++11. just use raw pointer.
2019-02-01 17:35:02 +09:00
Hemant
41a6a7880e
Fix warnings
Fixed these warnings:

src/logging_unittest.cc: At global scope:
src/logging_unittest.cc:1081:13: warning: 'void MyCheck(bool, bool)' defined but not used [-Wunused-function]
 static void MyCheck(bool a, bool b) {
             ^~~~~~~
src/logging_unittest.cc:1078:13: warning: 'void MyFatal()' defined but not used [-Wunused-function]
 static void MyFatal() {
             ^~~~~~~
2018-10-12 13:25:19 +01:00
Artem Dinaburg
62c3e3cd56 The %p format is implementation defined. Compare it via a special token,
just like the null pointer test.
2018-06-20 12:50:50 +02:00
Sergiu Deitsch
2f493d292c
Merge pull request #302 from Nazg-Gul/missing-prototype
Resolve missing prototype warning
2018-03-21 13:45:06 +01:00
Sergiu Deitsch
f3bd836de4
Merge pull request #281 from sergiud/msvc-error-define
Fixed undeclared identifier error
2018-01-02 02:21:51 +01:00