mirror of
				https://gitea.invidious.io/iv-org/shard-kemal.git
				synced 2024-08-15 00:53:36 +00:00 
			
		
		
		
	
						commit
						07b35a00b4
					
				
					 3 changed files with 50 additions and 2 deletions
				
			
		|  | @ -18,7 +18,6 @@ describe "Logger" do | ||||||
|     logger = Kemal::Logger.new |     logger = Kemal::Logger.new | ||||||
|     logger.handler.should be_a File |     logger.handler.should be_a File | ||||||
|   end |   end | ||||||
|    |  | ||||||
|   it "writes to a file in production" do |   it "writes to a file in production" do | ||||||
|     config = Kemal.config |     config = Kemal.config | ||||||
|     config.env = "production" |     config.env = "production" | ||||||
|  |  | ||||||
|  | @ -22,6 +22,8 @@ at_exit do | ||||||
|   logger.write "[#{config.env}] Kemal is ready to lead at #{config.scheme}://0.0.0.0:#{config.port}\n" |   logger.write "[#{config.env}] Kemal is ready to lead at #{config.scheme}://0.0.0.0:#{config.port}\n" | ||||||
| 
 | 
 | ||||||
|   Signal::INT.trap { |   Signal::INT.trap { | ||||||
|  |     logger.write "Kemal is going to take a rest!\n" | ||||||
|  |     logger.write "#{Time.now} - Bye Bye!\n\n" | ||||||
|     logger.handler.close |     logger.handler.close | ||||||
|     server.close |     server.close | ||||||
|     exit |     exit | ||||||
|  |  | ||||||
|  | @ -1,3 +1,5 @@ | ||||||
|  | require "colorize" | ||||||
|  | 
 | ||||||
| class Kemal::Logger < HTTP::Handler | class Kemal::Logger < HTTP::Handler | ||||||
|   getter handler |   getter handler | ||||||
| 
 | 
 | ||||||
|  | @ -17,7 +19,19 @@ class Kemal::Logger < HTTP::Handler | ||||||
|     response = call_next(request) |     response = call_next(request) | ||||||
|     elapsed = Time.now - time |     elapsed = Time.now - time | ||||||
|     elapsed_text = elapsed_text(elapsed) |     elapsed_text = elapsed_text(elapsed) | ||||||
|     output_message = "#{request.method} #{request.resource} - #{response.status_code} (#{elapsed_text})\n" | 
 | ||||||
|  |     if @env == "production" | ||||||
|  |       status_code = " #{response.status_code} " | ||||||
|  |       method = request.method | ||||||
|  |     else | ||||||
|  |       statusColor = color_for_status(response.status_code) | ||||||
|  |       methodColor = color_for_method(request.method) | ||||||
|  | 
 | ||||||
|  |       status_code = " #{response.status_code} ".colorize.back(statusColor).fore(:white) | ||||||
|  |       method = request.method.colorize(methodColor) | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     output_message = "#{time} |#{status_code}| #{method} #{request.resource} - (#{elapsed_text})\n" | ||||||
|     write output_message |     write output_message | ||||||
|     response |     response | ||||||
|   end |   end | ||||||
|  | @ -42,4 +56,37 @@ class Kemal::Logger < HTTP::Handler | ||||||
|       @handler.print message |       @handler.print message | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  | 
 | ||||||
|  |   private def color_for_status(code) | ||||||
|  |     if code >= 200 && code < 300 | ||||||
|  |       return :green | ||||||
|  |     elsif code >= 300 && code < 400 | ||||||
|  |       return :magenta | ||||||
|  |     elsif code >= 400 && code < 500 | ||||||
|  |       return :yellow | ||||||
|  |     else | ||||||
|  |       return :default | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   private def color_for_method(method) | ||||||
|  |     case method | ||||||
|  |     when "GET" | ||||||
|  |       return :blue | ||||||
|  |     when "POST" | ||||||
|  |       return :cyan | ||||||
|  |     when "PUT" | ||||||
|  |       return :yellow | ||||||
|  |     when "DELETE" | ||||||
|  |       return :red | ||||||
|  |     when "PATCH" | ||||||
|  |       return :green | ||||||
|  |     when "HEAD" | ||||||
|  |       return :magenta | ||||||
|  |     when "OPTIONS" | ||||||
|  |       return :white | ||||||
|  |     else | ||||||
|  |       return :default | ||||||
|  |     end | ||||||
|  |   end | ||||||
| end | end | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue