-
Notifications
You must be signed in to change notification settings - Fork 10
The logLevel property is not respected and non json debug logs are showing 0.14.0 #84
Description
Checks
- I've already read https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors and I'm sure my issue is not covered in the troubleshooting guide.
- I am using charts that are officially provided
Controller Version
0.14.0
Deployment Method
Helm
Checks
- This isn't a question or user support case (For Q&A and community support, go to Discussions).
- I've read the Changelog before submitting this issue and I'm sure it's not due to any recently-introduced backward-incompatible changes
To Reproduce
1. Have an arc controller setup on v0.13.0
2. Upgrade it to v0.14.0
3. See that each http requests done by the controller/listener (I assume it's the new scaleset library) are logging [DEBUG] GET https://broker.actions.githubusercontent.com/xxxDescribe the bug
After upgrading the arc runner controller from 0.13.0 to 0.14.0, we started to notice a lot of non-json logs in our observability dashboard.
After a quick investigation, it seems that one part of the code of the controller is not using a logger. We are getting a log for each request done by the controller listener with the following format:
[DEBUG] GET https://broker.actions.githubusercontent.com/scalesets/message (url can change)
I double checked our configuration and we do have
flags:
logLevel: 'info'
logFormat: 'json'
I also checked the secret created on the cluster holding the configuration and it reflects the same values as above (info and json log).
When checking I had one assumption about the new scaleset library:
In common_client.go#L109-L128, the logger passed via WithLogger() is stored in o.logger but never reaches the retryablehttp client:
retryClient = retryablehttp.NewClient() // sets Logger = defaultLogger (not nil)
// ...
if retryClient.Logger == nil { // always false — defaultLogger is not nil
retryClient.Logger = o.logger // never executed
}retryablehttp.NewClient() pre-populates Logger with a default log.Logger:
func NewClient() *Client {
return &Client{
Logger: defaultLogger, // ← a *log.Logger, never nil
// ...
}
}Since retryClient.Logger is never nil after NewClient(), the nil check could prevent o.logger from being assigned. The default log.Logger uses Printf("[DEBUG] %s %s", ...) which writes unconditionally to stderr with no level filtering.
Describe the expected behavior
For the controller to pass down the logger and not get stderr logs in plain text if json and info log are configured.
Additional Context
Nothing to add hereController Logs
2026/03/30 18:37:47 [DEBUG] GET https://broker.actions.githubusercontent.com/scalesets/messageRunner Pod Logs
It is not a runner issue.