mirror of
				https://gitea.invidious.io/iv-org/shard-kemal.git
				synced 2024-08-15 00:53:36 +00:00 
			
		
		
		
	Updated logger to be more robust
This commit is contained in:
		
							parent
							
								
									639d4a7a48
								
							
						
					
					
						commit
						28d4d5167b
					
				
					 6 changed files with 39 additions and 16 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -1 +1,2 @@ | ||||||
| .crystal | .crystal | ||||||
|  | *.log | ||||||
|  |  | ||||||
|  | @ -12,6 +12,17 @@ describe "Config" do | ||||||
|     config.port.should eq 3000 |     config.port.should eq 3000 | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  |   it "sets default environment to development" do | ||||||
|  |     config = Kemal.config | ||||||
|  |     config.env.should eq "development" | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   it "set environment to production" do | ||||||
|  |     config = Kemal.config | ||||||
|  |     config.env = "production" | ||||||
|  |     config.env.should eq "production" | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   it "adds a custom handler" do |   it "adds a custom handler" do | ||||||
|     config = Kemal.config |     config = Kemal.config | ||||||
|     config.add_handler CustomTestHandler.new |     config.add_handler CustomTestHandler.new | ||||||
|  |  | ||||||
|  | @ -1,11 +1,16 @@ | ||||||
| require "./spec_helper" | require "./spec_helper" | ||||||
| 
 | 
 | ||||||
| describe "Logger" do | describe "Logger" do | ||||||
|   it "logs stuff" do |   it "creates a STDOUT handler by default" do | ||||||
|     # IO.pipe do |r, w| |     config = Kemal.config | ||||||
|     #   logger = Kemal::Logger.new(w) |     logger = Kemal::Logger.new | ||||||
|     #   logger.info "Info from logger" |     logger.handler.should be_a IO | ||||||
|     #   r.gets.should match(/Info from logger/) |   end | ||||||
|     # end | 
 | ||||||
|  |   it "creates a file handler in production" do | ||||||
|  |     config = Kemal.config | ||||||
|  |     config.env = "production" | ||||||
|  |     logger = Kemal::Logger.new | ||||||
|  |     logger.handler.should be_a File | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ at_exit do | ||||||
|       Kemal.config.port = opt_port.to_i |       Kemal.config.port = opt_port.to_i | ||||||
|     end |     end | ||||||
|     opts.on("-e ", "--environment ", "environment") do |env| |     opts.on("-e ", "--environment ", "environment") do |env| | ||||||
|       env ? Kemal.config.env = env : "development" |       Kemal.config.env = env | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  | @ -17,9 +17,6 @@ at_exit do | ||||||
|   config.add_handler HTTP::StaticFileHandler.new("./public") |   config.add_handler HTTP::StaticFileHandler.new("./public") | ||||||
| 
 | 
 | ||||||
|   server = HTTP::Server.new(config.port, config.handlers) |   server = HTTP::Server.new(config.port, config.handlers) | ||||||
| 
 |  | ||||||
|   server.ssl = config.ssl |   server.ssl = config.ssl | ||||||
| 
 |  | ||||||
|   puts "Kemal is ready to lead at #{config.scheme}://0.0.0.0:#{config.port}" |  | ||||||
|   server.listen |   server.listen | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -8,6 +8,7 @@ module Kemal | ||||||
| 
 | 
 | ||||||
|     def initialize |     def initialize | ||||||
|       @port = 3000 |       @port = 3000 | ||||||
|  |       @env = "development" unless @env | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     def scheme |     def scheme | ||||||
|  |  | ||||||
|  | @ -1,13 +1,12 @@ | ||||||
| class Kemal::Logger < HTTP::Handler | class Kemal::Logger < HTTP::Handler | ||||||
|   property handler |   getter handler | ||||||
| 
 | 
 | ||||||
|   def initialize |   def initialize | ||||||
|     @env = Kemal.config.env |     @env = Kemal.config.env | ||||||
|     if @env == "production" |  | ||||||
|       @handler = File.new("kemal.log", "a+") |  | ||||||
|     else |  | ||||||
|     @handler = STDOUT |     @handler = STDOUT | ||||||
|     end |     config = Kemal.config | ||||||
|  |     @startup_message = "Kemal is ready to lead at #{config.scheme}://0.0.0.0:#{config.port}" | ||||||
|  |     @env == "production" ? setup_file_handler : setup_stdout_handler | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def call(request) |   def call(request) | ||||||
|  | @ -33,4 +32,13 @@ class Kemal::Logger < HTTP::Handler | ||||||
| 
 | 
 | ||||||
|     "#{(millis * 1000).round(2)}µs" |     "#{(millis * 1000).round(2)}µs" | ||||||
|   end |   end | ||||||
|  | 
 | ||||||
|  |   private def setup_file_handler | ||||||
|  |     @handler = File.new("kemal.log", "a+") | ||||||
|  |     @handler.write @startup_message.to_slice | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   private def setup_stdout_handler | ||||||
|  |     @handler.print @startup_message | ||||||
|  |   end | ||||||
| end | end | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue