Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix multiple logger handlers when custom logger is used #653

Merged
merged 1 commit into from
Feb 17, 2023

Commits on Jan 29, 2023

  1. Fix multiple logger handlers when custom logger is used

    When `logger` function is used, it adds logger handler
    after the static file handler. This causes 404 errors for
    static files. Default logger is also added this makes two
    logger handlers per every request.
    
    Reproducer:
    
    ```crystal
    require "kemal"
    
    public_folder "./public"
    
    get "/hello" do |env|
      "Hello!"
    end
    
    class MyCustomLogger < Kemal::BaseLogHandler
      def call(context)
        puts "I'm logging some custom stuff here."
        call_next(context) # => This calls the next handler
      end
    
      # This is used from `log` method.
      def write(message)
        STDERR.puts message # => Logs the output to STDERR
      end
    end
    
    \# This works
    \# Kemal.config.logger = MyCustomLogger.new
    
    \# This fails while serving static files
    logger MyCustomLogger.new
    
    Kemal.run
    
    ```
    
    With this PR, `logger` function only updates the `Kemal.config`
    and `Kemal.run` will take care of adding logger handler.
    
    This PR also fixes the warning when tried to run the example code
    for adding custom logger.
    
    ```
     10 | def call(env)
                   ^--
    Warning: positional parameter 'env' corresponds to
    parameter 'context' of the overridden method
    Kemal::BaseLogHandler#call(context : HTTP::Server::Context),
    which has a different name and may affect named argument passing
    ```
    
    Signed-off-by: Aravinda Vishwanathapura <[email protected]>
    aravindavk committed Jan 29, 2023
    Configuration menu
    Copy the full SHA
    98b6ab0 View commit details
    Browse the repository at this point in the history