Skip to content
Snippets Groups Projects
  1. Mar 14, 2020
  2. Mar 13, 2020
  3. Mar 12, 2020
  4. Sep 27, 2019
  5. Sep 18, 2019
  6. Sep 02, 2019
  7. Sep 01, 2019
    • kongr45gpen's avatar
      Merge branch 'logging' into 'master' · c4e20aba
      kongr45gpen authored
      Logging
      
      This adds a Logging "library" to the ECSS Services repo. This library allows logging messages with different severities, and allows the user of the services to choose which severity they want displayed.
      
      A comparison between [Google (glog)](https://github.com/google/glog), [spdlog](https://github.com/gabime/spdlog), [plog](https://github.com/SergiusTheBest/plog) and [Boost::Log](https://www.boost.org/doc/libs/1_63_0/libs/log/doc/html/index.html) was made, and we decided to go with a custom lite solution, also compatible with `etl::string`.
      
      The following log levels are supported, but they are up for discussion:
      
      |Level|Description|
      |---|---|
      | **trace** | Very detailed information, useful for tracking the individual steps of an operation.|
      | **debug** | General debugging information.|
      | **info** | Noteworthy or periodical events.|
      | **notice** | Uncommon but expected events.|
      | **warning** | Unexpected events that do not compromise the operability of a function.|
      | **error** | Unexpected failure of an operation.|
      | **emergency** | Unexpected failure that renders the entire system unusable.|
      | **disabled** | Use this log level to disable logging entirely. No message should be logged as disabled.|
      
      The library uses `#define`s that allow logging in this way:
      ```c++
      LOG_ERROR << "Configuration not found";
      LOG_INFO << "The camera took " << 15 << " pictures today";
      LOG_DEBUG << "Ran function " << functionName << " with " << getId(functionName);
      ```
      
      Closes #18.
      
      It is lite enough to be used [on a microcontroller](https://gitlab.com/acubesat/obc/mockup-4/commit/4aaa55bb72030cee6cf4eca7b082297cf60edf37).
      
      **See https://acubesat.gitlab.io/obc/ecss-services/docs/classLogger.html for more detailed documentation of the Logger functionality**.
      
      
      The following images show a sample log output on x86 and on an MCU via UART:  
      ![Log output on x86](/uploads/2ed78e90bfbab8125879fe96346aa9c9/Image_Pasted_at_2019-8-8_14-04.png)![Log output on MCU](/uploads/c8505fc7f282ed520f36d5f4f2beabc7/Image_Pasted_at_2019-8-9_00-45.png)
      
      See merge request acubesat/obc/ecss-services!44
      c4e20aba
    • kongr45gpen's avatar
    • kongr45gpen's avatar
      e6d520ca
    • kongr45gpen's avatar
      General Logger fixes · 83f764c5
      kongr45gpen authored
      Use a non-templated version of etl::string
      
      Set the etl format as a static variable for the Logger
      
      This prevents wasting time recreating the format variable every time the
      LOG function is called.
      
      Force inlining the LOG function
      
      This forces the compiler to check the `if constexpr` structure, and
      disable the logging line entirely if needed.
      
      Never redefine the log level
      
      Move `disabled` logging level to ease level checks
      83f764c5
    • kongr45gpen's avatar
      Use `noexcept` for some Logging functions · ffcea870
      kongr45gpen authored
      Thanks @xlxs41 for the suggestion!
      ffcea870
    • kongr45gpen's avatar
      A naive reimplementation of the Logger without macro tricks · 626f3af4
      kongr45gpen authored
      Reinstantiate log level checks
      
      Fix documentation, as suggested by @thodkatz
      
      Add a few more documentation lines to LogEntry
      
      Fixes for cppcheck-misra and vera checks due to updates & false positives
      626f3af4
    • kongr45gpen's avatar
      Ignore some random MISRA false positives · bb5862f9
      kongr45gpen authored
      Apply suggestion to inc/Logger.hpp
      
      Be explicit about the type used in the LogLevel enumeration
      
      This makes LogLevel an unscoped strongly-type enumeration, making sure
      there is consistency between the expected log level of uint8_t
      bb5862f9
Loading