Configurable Log Lines Number in Healthcheck Log Output

This commit is contained in:
Krzysztof Adamski
2023-09-12 21:06:36 +02:00
parent 8ddc484ce6
commit 892cf0e66b
5 changed files with 7 additions and 7 deletions

View File

@@ -26,7 +26,7 @@ class Kamal::Commands::Healthcheck < Kamal::Commands::Base
end end
def logs def logs
pipe container_id, xargs(docker(:logs, "--tail", lines, "2>&1")) pipe container_id, xargs(docker(:logs, "--tail", log_lines, "2>&1"))
end end
def stop def stop
@@ -58,7 +58,7 @@ class Kamal::Commands::Healthcheck < Kamal::Commands::Base
config.healthcheck["exposed_port"] config.healthcheck["exposed_port"]
end end
def lines def log_lines
config.healthcheck["lines"] config.healthcheck["log_lines"]
end end
end end

View File

@@ -149,7 +149,7 @@ class Kamal::Configuration
def healthcheck def healthcheck
{ "path" => "/up", "port" => 3000, "max_attempts" => 7, "exposed_port" => 3999, "cord" => "/tmp/kamal-cord", "lines" => 50 }.merge(raw_config.healthcheck || {}) { "path" => "/up", "port" => 3000, "max_attempts" => 7, "exposed_port" => 3999, "cord" => "/tmp/kamal-cord", "log_lines" => 50 }.merge(raw_config.healthcheck || {})
end end
def readiness_delay def readiness_delay

View File

@@ -93,7 +93,7 @@ class CommandsHealthcheckTest < ActiveSupport::TestCase
end end
test "logs with custom lines number" do test "logs with custom lines number" do
@config[:healthcheck] = { "lines" => 150 } @config[:healthcheck] = { "log_lines" => 150 }
assert_equal \ assert_equal \
"docker container ls --all --filter name=^healthcheck-app-123$ --quiet | xargs docker logs --tail 150 2>&1", "docker container ls --all --filter name=^healthcheck-app-123$ --quiet | xargs docker logs --tail 150 2>&1",
new_command.logs.join(" ") new_command.logs.join(" ")

View File

@@ -224,7 +224,7 @@ class ConfigurationTest < ActiveSupport::TestCase
:volume_args=>["--volume", "/local/path:/container/path"], :volume_args=>["--volume", "/local/path:/container/path"],
:builder=>{}, :builder=>{},
:logging=>["--log-opt", "max-size=\"10m\""], :logging=>["--log-opt", "max-size=\"10m\""],
:healthcheck=>{ "path"=>"/up", "port"=>3000, "max_attempts" => 7, "exposed_port" => 3999, "cord" => "/tmp/kamal-cord", "lines" => 50 }} :healthcheck=>{ "path"=>"/up", "port"=>3000, "max_attempts" => 7, "exposed_port" => 3999, "cord" => "/tmp/kamal-cord", "log_lines" => 50 }}
assert_equal expected_config, @config.to_h assert_equal expected_config, @config.to_h
end end

View File

@@ -54,7 +54,7 @@ class MainTest < IntegrationTest
assert_equal({ user: "root", auth_methods: [ "publickey" ], keepalive: true, keepalive_interval: 30, log_level: :fatal }, config[:ssh_options]) assert_equal({ user: "root", auth_methods: [ "publickey" ], keepalive: true, keepalive_interval: 30, log_level: :fatal }, config[:ssh_options])
assert_equal({ "multiarch" => false, "args" => { "COMMIT_SHA" => version } }, config[:builder]) assert_equal({ "multiarch" => false, "args" => { "COMMIT_SHA" => version } }, config[:builder])
assert_equal [ "--log-opt", "max-size=\"10m\"" ], config[:logging] assert_equal [ "--log-opt", "max-size=\"10m\"" ], config[:logging]
assert_equal({ "path" => "/up", "port" => 3000, "max_attempts" => 7, "exposed_port" => 3999, "cord"=>"/tmp/kamal-cord", "lines" => 50, "cmd"=>"wget -qO- http://localhost > /dev/null || exit 1" }, config[:healthcheck]) assert_equal({ "path" => "/up", "port" => 3000, "max_attempts" => 7, "exposed_port" => 3999, "cord"=>"/tmp/kamal-cord", "log_lines" => 50, "cmd"=>"wget -qO- http://localhost > /dev/null || exit 1" }, config[:healthcheck])
end end
private private