ivanovkirilg / linebot

A 'robot' moving on 1 axis for learning purposes
0 stars 0 forks source link

Add logging facility LOGR #10

Closed ivanovkirilg closed 3 months ago

ivanovkirilg commented 5 months ago

This is meant to close #6.

'Design for concurrency' requirement is not fully met due to usage of non thread-safe std::localtime. Without full C++20 <chrono> support, there is not a standard way of getting a timestamp, so this shall remain as an open issue I've decided to keep 'time since epoch' format which can then be post-processed into a timestamp.

TODO: warnings and data logging.

coderabbitai[bot] commented 3 months ago
Walkthrough ## Walkthrough The recent changes introduce a comprehensive logging framework within the `LOGR` module, enhancing error handling and logging capabilities across the project. Key features include a new logging mechanism, integration of trace functionality, and a custom exception class. These updates improve debugging and error reporting, contributing to better maintainability and performance, particularly in concurrent environments. ## Changes | Files | Change Summary | |-----------------------------|----------------------------------------------------------------------------------------------------| | CMakeLists.txt, CTRL/CMakeLists.txt, MAIN/CMakeLists.txt, UI/CMakeLists.txt | Added Doxygen support, created `LOGR` subdirectory, and updated library linking to include `LOGR`. | | CTRL/src/Controller.cpp | Introduced logging within `Controller::executeMove` using `LOGR::Trace`. | | LOGR/CMakeLists.txt | Configured CMake for the `LOGR` project, including source files and library creation. | | LOGR/include/LOGR/*.hpp | Added new classes (`Exception`, `Logger`, `Trace`, `Warning`) for structured logging and error handling. | | LOGR/src/*.cpp | Implemented functionality for the newly introduced logging classes. | | MAIN/src/main.cpp | Integrated `LOGR::Trace` for enhanced logging and improved exception handling. | | UI/include/UI/UserInterface.hpp | Modified `InvalidInputException` to derive from `LOGR::Exception` for better logging integration. | | UI/src/UserInterface.cpp | Added `LOGR::Trace` logging to various methods within the `UserInterface` class. | | architecture.md | Updated architecture diagram to reflect changes in component structure. | ## Sequence Diagram(s) ```mermaid sequenceDiagram participant User participant UI participant Controller participant LOGR User->>UI: Input data UI->>Controller: Process data Controller->>LOGR: Log move execution LOGR-->>Controller: Log entry Controller-->>UI: Return result UI-->>User: Display result ``` ## Assessment against linked issues | Objective | Addressed | Explanation | |---------------------------------------------------|-----------|----------------------------------------------------| | Log errors, trace entry/exit of functions, trace additional messages ( #6 ) | ✅ | | | Designed for concurrency ( #6 ) | ✅ | | | Standardized logging to file ( #6 ) | ❌ | No implementation for logging to a file is present. |

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): > :bangbang: **IMPORTANT** > Auto-reply has been disabled for this repository in the CodeRabbit settings. The CodeRabbit bot will not respond to your replies unless it is explicitly tagged. - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.