Skip to content

The logLevel property is not respected and non json debug logs are showing 0.14.0 #84

@kbntx

Description

@kbntx

Checks

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/xxx

Describe 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 here

Controller Logs

2026/03/30 18:37:47 [DEBUG] GET https://broker.actions.githubusercontent.com/scalesets/message

Runner Pod Logs

It is not a runner issue.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions