Repository navigation
fix(log): quieter startup and a ready line with the URL - #538
Merged
Merged
Conversation
A fresh server printed 541 lines in its first minute (524 at INFO) and never said which URL to open. Now: 28 lines, 15 at INFO. - Check runs are DEBUG. The incident pipeline logs one INFO line when a check changes status, naming it: "Check down name=... slug=... previous=... error=...". A brand-new check coming up, entering validating and validating back to up stay DEBUG. - Runner, per-job, per-run, per-sample and boot status lines are DEBUG. Each worker keeps one INFO "started" line. Boot settings log at INFO only when they are not the defaults. - Once the HTTP listener is bound: "SolidPing is ready" with the URL, version and database (never credentials), plus the first-login line while the seeded admin still has to change its password. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #538 +/- ##
==========================================
+ Coverage 82.76% 82.81% +0.05%
==========================================
Files 1178 1181 +3
Lines 121576 121663 +87
==========================================
+ Hits 100617 100752 +135
+ Misses 20952 20904 -48
Partials 7 7
🚀 New features to boost your workflow:
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fclairamb
enabled auto-merge (squash)
October 12, 2026 06:14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A fresh server (SQLite, empty data dir, default env) printed 541 lines in its first minute, 524 of them at INFO, and never said which URL to open.
Most of it was routine work logged at INFO: two lines per check run that did not even name the check, a start and stop line per runner (25 of each), one line per seeded sample (about 120), one line per job, and a dozen "X disabled" or "Ensured X exists" lines on every boot.
Fix
Check down name="Local Redis" slug=redis-localhost previous=validating error="ping failed: dial tcp [::1]:6379: connect: connection refused". It fires for down, back up, warning, and leaving stale (also inside a maintenance window).validating, andvalidatingback toup. Validating is the confirmation window before down. It notifies nobody, and theCheck downline follows once it is confirmed. A brand-new check that fails is logged when it goes down.Job worker started runners=2,Check worker started runners=25 region=default), written before the ready line. Runner, fetcher, express, passive evaluator, queue sampler, per-job, per-run, multi-step and the per-minute "Processing stats" lines are DEBUG. A deported agent keeps an INFOCheck worker startedonce it has registered.job_startup.go, levels and messages only): per-type and per-sample lines are DEBUG, one INFOLoaded sample checks total=72. The(non-fatal)failures move from INFO to WARN.Created default organizationandCreated admin userstay INFO.SP_USERAGENTset), both egress-policy lines (SP_EGRESS_ALLOW_PRIVATEset), the SQLite vacuum line (1 s or more), the user-token hashing (rows > 0).Shutting down serverandAll runners stoppedstay INFO. Every per-worker stop line is DEBUG.SolidPing is ready url=http://localhost:4986 listen=[::]:4986 version=dev database="sqlite /data/solidping.db".urlis the configured base URL when one is set (the built-inhttp://localhost:4000default counts as unset), otherwise derived from the listen address (:4000,0.0.0.0:4000,[::]:4000read as localhost). That rule is the purereadyURLwith a table test.databaseis the type plus the SQLite path or the Postgreshost:port/dbname. The DSN is never printed, and a DSN that does not parse cleanly prints the type only.must_change_password, a second line:First login with the default admin account, you will be asked to change the password email=admin@solidping.io password=solidpass. The password is thedefaults.Passwordconstant, which is never configurable. Only the startup seed sets that flag, and the forced change clears it. Neither line is printed in agent mode or without an HTTP listener (mcp --stdio).web/dash0/showcase) now waits forSolidPing is ready. The Linux install page says what the default log level shows.Test plan
Same command before and after, from an empty dir:
env -i HOME=$HOME PATH=$PATH PORT=4986 SP_DB_TYPE=sqlite SP_DB_DIR=$(mktemp -d) ./sp serve, stopped with SIGINT after 60 s.The 9 WARN lines and 4 raw
redis:lines left are the ones owned by the other logging PRs.Check downfor the failing samples once their 120 s confirmation passed (26 of them)TestReadyURL,TestPostgresTarget,TestDatabaseDescription,TestSeedAdminEmail,TestStatusChangeLog, plus small ones for the level helpersTestMCPStdioCommandFreshDatabaseasserts an INFO startup line that still exists and that stdio prints no ready line~/go/bin/golangci-lint run ./...: 0 issuesgo test ./... -short(make test): all green🤖 Generated with Claude Code