shoryuken icon indicating copy to clipboard operation
shoryuken copied to clipboard

Configure server side logging

Open BenMorganMY opened this issue 7 months ago • 3 comments

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.

BenMorganMY avatar May 26 '25 19:05 BenMorganMY

## 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.

❤️ Share
🪧 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 @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @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 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 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 generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this 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.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

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 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.

coderabbitai[bot] avatar May 26 '25 19:05 coderabbitai[bot]

Thanks. Sorry I missed that :pray:

mensfeld avatar Jun 16 '25 07:06 mensfeld

@mensfeld can you take another look at this?

BenMorganMY avatar Jun 17 '25 20:06 BenMorganMY

If all except 6.1 pass I will retarget and remove 6.1 support.

mensfeld avatar Jul 03 '25 14:07 mensfeld

yeah let me merge it there and deal with this separately

mensfeld avatar Jul 03 '25 14:07 mensfeld