Configure server side logging
This PR allows Shoryuken to be able to configure the logger such as:
Shoryuken.logger = Appsignal::Logger.new('shoryuken')
Shoryuken.logger.formatter = Shoryuken::Logging::WithoutTimestamp.new
This provides some feature parity to Sidekiq and helps developers that are using a service like AppSignal get their logs up there.
https://docs.appsignal.com/logging/platforms/integrations/ruby.html#sidekiq-logger
Summary by CodeRabbit
-
New Features
- Added the ability to set a custom logger through the main interface.
- Introduced a new log formatter that omits timestamps for log messages.
-
Refactor
- Improved logging formatter structure for better code organization and shared functionality.
- Updated logger handling for improved performance by caching the logger instance.
-
Style
- Reformatted attribute declarations for improved readability.
-
Chores
- Updated class inheritance for compatibility with external job queue adapters.
## Walkthrough
The changes introduce enhancements and refactoring to logging and configuration handling in the Shoryuken codebase. These include improved logger delegation, explicit adapter inheritance for Active Job integration, a refactored logging formatter hierarchy with a new base class and additional formatter, and memoization of the logger instance within the options class.
## Changes
| File(s) | Change Summary |
|------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|
| lib/shoryuken.rb | Added `:logger=` to delegated methods for `shoryuken_options` in the `Shoryuken` module. |
| lib/shoryuken/extensions/active_job_adapter.rb | Added conditional `BaseAdapter` class; updated `ShoryukenAdapter` to inherit from `BaseAdapter`. |
| lib/shoryuken/logging.rb | Introduced `Base` formatter class; updated `Pretty` to inherit from `Base`; added `WithoutTimestamp` formatter. |
| lib/shoryuken/options.rb | Added `attr_writer :logger`; reformatted attribute accessors; memoized logger instance in `Options` class. |
| gemfiles/rails_6_1.gemfile | Removed fixed version constraint from `pry-byebug` gem declaration. |
| gemfiles/rails_7_0.gemfile | Removed `pry` gem; removed version constraints from `pry-byebug` gem declaration. |
| shoryuken.gemspec | Added new runtime dependency on `mutex_m` gem. |
## Poem
> In the warren logs now shine anew,
> With formatters crisp and options true.
> A logger passed, a thread ID found,
> The adapters now on solid ground.
> Rabbits cheer for code refined—
> In every hop, new gems we find!
> 🐇✨
✨ Finishing Touches
- [ ] 📝 Generate Docstrings
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
🪧 Tips
Chat
There are 3 ways to chat with CodeRabbit:
- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
-
I pushed a fix in commit <commit_id>, please review it. -
Explain this complex logic. -
Open a follow-up GitHub issue for this discussion.
-
- Files and specific lines of code (under the "Files changed" tab): Tag
@coderabbitaiin a new review comment at the desired location with your query. Examples:-
@coderabbitai explain this code block. -
@coderabbitai modularize this function.
-
- PR comments: Tag
@coderabbitaiin 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 gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase. -
@coderabbitai read src/utils.ts and explain its main purpose. -
@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.
-
Support
Need help? Create a ticket on our support page for assistance with any issues or questions.
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 using PR comments)
-
@coderabbitai pauseto pause the reviews on a PR. -
@coderabbitai resumeto resume the paused reviews. -
@coderabbitai reviewto trigger an incremental review. This is useful when automatic reviews are disabled for the repository. -
@coderabbitai full reviewto do a full review from scratch and review all the files again. -
@coderabbitai summaryto regenerate the summary of the PR. -
@coderabbitai generate docstringsto generate docstrings for this PR. -
@coderabbitai generate sequence diagramto generate a sequence diagram of the changes in this PR. -
@coderabbitai resolveresolve all the CodeRabbit review comments. -
@coderabbitai configurationto show the current CodeRabbit configuration for the repository. -
@coderabbitai helpto get help.
Other keywords and placeholders
- Add
@coderabbitai ignoreanywhere in the PR description to prevent this PR from being reviewed. - Add
@coderabbitai summaryto generate the high-level summary at a specific location in the PR description. - Add
@coderabbitaianywhere in the PR title to generate the title automatically.
CodeRabbit Configuration File (.coderabbit.yaml)
- You can programmatically configure CodeRabbit by adding a
.coderabbit.yamlfile to the root of your repository. - Please see the configuration documentation 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 for detailed information on how to use CodeRabbit.
- Join our Discord Community to get help, request features, and share feedback.
- Follow us on X/Twitter for updates and announcements.
Thanks. Sorry I missed that :pray:
@mensfeld can you take another look at this?
If all except 6.1 pass I will retarget and remove 6.1 support.
yeah let me merge it there and deal with this separately