Commit Graph

24 Commits (3be94a24ba06da02b42642b2c7088e83d80eb8cd)

Author SHA1 Message Date
nirenjan 3be94a24ba Update logging library to include module and string buffer
This commit adds the following changes to pinelog:

- Optional buffer to write the message to prior to writing to the output
  stream. This reduces the likelihood of log messages from multiple
  threads interleaving due to multiple calls to fputs/fprintf, etc. The
  default is to still write directly to the output stream, but the
  integrator can add a define of PINELOG_BUFFER_SZ to the CFLAGS, and
  this will allow the application to log messages that are shorter than
  the above size, including the timestamp, level and backtrace if any.

- Optional module level logging. This allows more fine-grained
  debugging, where the application can control the log levels of the
  individual modules. By default, when modules are configured, they
  default to the global log level, but this can be overridden by the
  application.
2021-11-08 16:18:30 -08:00
nirenjan 5355a6ed8e Add noreturn attribute to tap_bailout
This change is necessary since clang warns on a missing noreturn
attribute.
2021-10-25 12:56:41 -07:00
nirenjan 349b2d6e86 Use an in-memory pipe for tests
Prior to this change, the test harness was creating a FIFO on disk using
`mkfifo`. This is really unnecessary, and we can use `pipe` instead to
create a pair of file descriptors corresponding to a FIFO in memory,
without having to go to disk at all.

This change creates the FIFO and sets it to non-blocking to emulate the
existing behavior.
2021-10-25 12:47:10 -07:00
nirenjan 0256807417 Use strrchr only if the compiler supports __builtin_strrchr 2021-08-25 14:16:53 -07:00
nirenjan 204aadead0 Use __builtin_strrchr to get file base name
Prior to this change, pinelog used __FILE__ in the backtrace call.
However, this has a limitation that if used in a build system with
sources in subdirectories and/or a separate build directory, the
relative path to the file is used, giving us a backtrace like this.

    ../../daemon/x52d_main.c:51

This change checks if the compiler supports the __builtin_strrchr to
compute the file basename at compile time. If the compiler does not
support it, it falls back to using __FILE__ directly. This should not be
an issue on a modern compiler like gcc or clang.
2021-08-25 12:11:53 -07:00
nirenjan aa0a5545d0 Remove the use of config.h
Prior to this change, pinelog relied on an autoconf generated config.h
which checked if the compiler supports __attribute__ with constructor,
destructor and format. However, most modern compilers already have
support for this, and we can use the __has_attribute special operator
instead to check for this at compile time.

By eliminating the need to create a config.h file, it simplifies
integration into other projects that may not have one.
2021-08-25 12:07:40 -07:00
nirenjan 8983bf8b28 Ignore test and benchmark programs 2021-08-25 09:35:20 -07:00
nirenjan 27a5eab8b7 Use localtime_r instead of localtime 2021-08-03 11:25:25 -07:00
nirenjan bdee493f03 Add preprocessor definition to disable traces 2021-07-27 17:01:41 -07:00
nirenjan 5b2686a406 Fix pinelog builds on MacOS 2021-07-19 11:15:42 -07:00
nirenjan 48bd049b4f Merge commit '9fa1a428a45eabff0122e199a687068f0e6280dd' into daemon 2021-07-19 09:50:42 -07:00
nirenjan 321d9aaa0e Add benchmark program to tests 2021-07-19 09:35:20 -07:00
nirenjan a6e789e196 Remove config.h.in - this is autogenerated 2021-07-18 22:24:49 -07:00
nirenjan 68d5aaef66 Update README to include destructor attribute 2021-07-16 08:33:22 -07:00
nirenjan a3eb2c03d7 Add method to close output stream and reset to default 2021-07-16 08:29:11 -07:00
nirenjan fb9b51a130 Fix format-literal error in clang 2021-07-15 18:31:01 -07:00
nirenjan b5457f405e Add pinelog.h to distribution tarball 2021-07-14 12:39:29 -07:00
nirenjan 85ab66b323 Add usage and integration instructions to README 2021-07-14 12:32:12 -07:00
nirenjan 051e5f4639 Add tests for different configurations 2021-07-14 11:05:20 -07:00
nirenjan 10941defb2 Add test framework 2021-07-14 11:00:44 -07:00
nirenjan 490a2e3faa Add check for __attribute__((format)) 2021-07-13 11:45:33 -07:00
nirenjan 091dd29d3b Rename functions and macros to use the pinelog_ prefix 2021-07-13 11:40:33 -07:00
nirenjan aa330a2cbf Add autotools build framework 2021-07-13 11:33:10 -07:00
nirenjan 45762f497c Initial commit 2021-07-13 10:57:22 -07:00