Revert "chore: Cleanup unused transport log level"

Reverting this change. Removing flags must be done 3 months in advance. Although this wasn't used, we must announce it before removing it.
This commit is contained in:
Miguel da Costa Martins Marcelino
2026-09-10 15:05:52 +00:00
parent b749dfd998
commit 232ff3777c
12 changed files with 46 additions and 22 deletions
+8
View File
@@ -31,6 +31,14 @@ func ConfigureLoggingFlags(shouldHide bool) []cli.Flag {
EnvVars: []string{"TUNNEL_LOGLEVEL"},
Hidden: shouldHide,
}),
altsrc.NewStringFlag(&cli.StringFlag{
Name: flags.TransportLogLevel,
Aliases: []string{"proto-loglevel"}, // This flag used to be called proto-loglevel
Value: "info",
Usage: "Transport logging level(previously called protocol logging level) {debug, info, warn, error, fatal}",
EnvVars: []string{"TUNNEL_PROTO_LOGLEVEL", "TUNNEL_TRANSPORT_LOGLEVEL"},
Hidden: shouldHide,
}),
altsrc.NewStringFlag(&cli.StringFlag{
Name: flags.LogFile,
Usage: "Save application log to this file for reporting issues.",
+3
View File
@@ -135,6 +135,9 @@ const (
// LogLevelSSH is the command line flag for the cloudflared ssh logging level
LogLevelSSH = "log-level"
// TransportLogLevel is the command line flag for the transport logging level
TransportLogLevel = "transport-loglevel"
// LogFile is the command line flag to define the file where application logs will be stored
LogFile = "logfile"
+5 -2
View File
@@ -113,6 +113,7 @@ var (
"proxy-address",
"proxy-port",
cfdflags.LogLevel,
cfdflags.TransportLogLevel,
cfdflags.LogFile,
cfdflags.LogDirectory,
cfdflags.TraceOutput,
@@ -396,7 +397,9 @@ func StartServer(
return fmt.Errorf("namedTunnel is nil")
}
observer := connection.NewObserver(log)
logTransport := logger.CreateTransportLoggerFromContext(c, logger.EnableTerminalLog)
observer := connection.NewObserver(log, logTransport)
// Send Quick Tunnel URL to UI if applicable
quickTunnelURL := namedTunnel.QuickTunnelUrl
@@ -404,7 +407,7 @@ func StartServer(
observer.SendURL(quickTunnelURL)
}
tunnelConfig, orchestratorConfig, err := prepareTunnelConfig(ctx, c, info, log, observer, namedTunnel)
tunnelConfig, orchestratorConfig, err := prepareTunnelConfig(ctx, c, info, log, logTransport, observer, namedTunnel)
if err != nil {
log.Err(err).Msg("Couldn't start tunnel")
return err
+3 -1
View File
@@ -46,6 +46,7 @@ var (
flags.Retries,
flags.Protocol,
flags.LogLevel,
flags.TransportLogLevel,
flags.OriginCert,
flags.Metrics,
flags.MetricsUpdateFreq,
@@ -113,7 +114,7 @@ func prepareTunnelConfig(
ctx context.Context,
c *cli.Context,
info *cliutil.BuildInfo,
log *zerolog.Logger,
log, logTransport *zerolog.Logger,
observer *connection.Observer,
namedTunnel *connection.TunnelProperties,
) (*supervisor.TunnelConfig, *orchestration.Config, error) {
@@ -234,6 +235,7 @@ func prepareTunnelConfig(
LBPool: c.String(flags.LBPool),
Tags: tags,
Log: log,
LogTransport: logTransport,
Observer: observer,
ReportedVersion: info.Version(),
// Note TUN-3758 , we use Int because UInt is not supported with altsrc
+4 -4
View File
@@ -33,7 +33,7 @@ func newTestHTTP2Connection() (*HTTP2Connection, net.Conn) {
edgeConn, cfdConn := net.Pipe()
connIndex := uint8(0)
log := zerolog.Nop()
obs := NewObserver(&log)
obs := NewObserver(&log, &log)
controlStream := NewControlStream(
obs,
mockConnectedFuse{},
@@ -363,7 +363,7 @@ func TestServeControlStream(t *testing.T) {
unregistered: make(chan struct{}),
}
obs := NewObserver(&log)
obs := NewObserver(&log, &log)
controlStream := NewControlStream(
obs,
mockConnectedFuse{},
@@ -417,7 +417,7 @@ func TestFailRegistration(t *testing.T) {
unregistered: make(chan struct{}),
}
obs := NewObserver(&log)
obs := NewObserver(&log, &log)
controlStream := NewControlStream(
obs,
mockConnectedFuse{},
@@ -466,7 +466,7 @@ func TestGracefulShutdownHTTP2(t *testing.T) {
events := &eventCollectorSink{}
shutdownC := make(chan struct{})
obs := NewObserver(&log)
obs := NewObserver(&log, &log)
obs.RegisterSink(events)
controlStream := NewControlStream(
obs,
+3 -1
View File
@@ -20,6 +20,7 @@ const (
type Observer struct {
log *zerolog.Logger
logTransport *zerolog.Logger
metrics *tunnelMetrics
tunnelEventChan chan Event
addSinkChan chan EventSink
@@ -29,9 +30,10 @@ type EventSink interface {
OnTunnelEvent(event Event)
}
func NewObserver(log *zerolog.Logger) *Observer {
func NewObserver(log, logTransport *zerolog.Logger) *Observer {
o := &Observer{
log: log,
logTransport: logTransport,
metrics: newTunnelMetrics(),
tunnelEventChan: make(chan Event, observerChannelBufferSize),
addSinkChan: make(chan EventSink, observerChannelBufferSize),
+7 -9
View File
@@ -1,7 +1,6 @@
package connection
import (
"runtime"
"strconv"
"sync"
"testing"
@@ -10,23 +9,22 @@ import (
"github.com/prometheus/client_golang/prometheus"
dto "github.com/prometheus/client_model/go"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestSendUrl(t *testing.T) {
observer := NewObserver(&log)
observer := NewObserver(&log, &log)
observer.SendURL("my-url.com")
assert.InEpsilon(t, 1.0, getCounterValue(t, observer.metrics.userHostnamesCounts, "https://my-url.com"), 0.001)
assert.Equal(t, 1.0, getCounterValue(t, observer.metrics.userHostnamesCounts, "https://my-url.com"))
observer.SendURL("https://another-long-one.com")
assert.InEpsilon(t, 1.0, getCounterValue(t, observer.metrics.userHostnamesCounts, "https://another-long-one.com"), 0.001)
assert.Equal(t, 1.0, getCounterValue(t, observer.metrics.userHostnamesCounts, "https://another-long-one.com"))
}
func getCounterValue(t *testing.T, metric *prometheus.CounterVec, val string) float64 {
var m = &dto.Metric{}
err := metric.WithLabelValues(val).Write(m)
require.NoError(t, err)
assert.NoError(t, err)
return m.Counter.GetValue()
}
@@ -61,16 +59,16 @@ func TestRegisterServerLocation(t *testing.T) {
id := strconv.Itoa(i)
assert.Equal(t, "AUS", m.oldServerLocations[id])
}
}
func TestObserverEventsDontBlock(t *testing.T) {
observer := NewObserver(&log)
observer := NewObserver(&log, &log)
var mu sync.Mutex
observer.RegisterSink(EventSinkFunc(func(_ Event) {
// callback will block if lock is already held
mu.Lock()
defer mu.Unlock()
runtime.Gosched()
mu.Unlock()
}))
timeout := time.AfterFunc(5*time.Second, func() {
+1 -1
View File
@@ -225,7 +225,7 @@ func TestControlStreamClassifiesDuplicateRegistration(t *testing.T) {
shouldFail: errors.New(DuplicateConnectionError),
}
controlStream := NewControlStream(
NewObserver(&log),
NewObserver(&log, &log),
mockConnectedFuse{},
&TunnelProperties{},
0,
+6 -2
View File
@@ -128,6 +128,10 @@ func newZerolog(loggerConfig *Config) *zerolog.Logger {
return &log
}
func CreateTransportLoggerFromContext(c *cli.Context, disableTerminal bool) *zerolog.Logger {
return createFromContext(c, cfdflags.TransportLogLevel, cfdflags.LogDirectory, disableTerminal)
}
func CreateLoggerFromContext(c *cli.Context, disableTerminal bool) *zerolog.Logger {
return createFromContext(c, cfdflags.LogLevel, cfdflags.LogDirectory, disableTerminal)
}
@@ -212,7 +216,7 @@ func createFileWriter(config FileConfig) (io.Writer, error) {
fullpath := config.Fullpath()
// Try to open the existing file
logFile, err := os.OpenFile(fullpath, os.O_APPEND|os.O_WRONLY, filePermMode) //nolint:gosec // Log file path is provided by the configured FileConfig.
logFile, err := os.OpenFile(fullpath, os.O_APPEND|os.O_WRONLY, filePermMode)
if err != nil {
// If the existing file wasn't found, or couldn't be opened, just ignore
// it and recreate a new one.
@@ -242,7 +246,7 @@ func createDirFile(config FileConfig) (io.Writer, error) {
mode := os.FileMode(filePermMode)
fullPath := filepath.Join(config.Dirname, config.Filename)
logFile, err := os.OpenFile(fullPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, mode) //nolint:gosec // Log file path is constructed from the configured FileConfig.
logFile, err := os.OpenFile(fullPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, mode)
if err != nil {
return nil, fmt.Errorf("unable to create a new logfile: %s", err)
}
+4 -1
View File
@@ -8,6 +8,7 @@ import (
"github.com/prometheus/client_golang/prometheus"
"github.com/quic-go/quic-go"
"github.com/rs/zerolog"
"github.com/cloudflare/cloudflared/connection"
"github.com/cloudflare/cloudflared/edgediscovery"
@@ -40,7 +41,8 @@ type Supervisor struct {
nextConnectedIndex int
nextConnectedSignal chan struct{}
log *ConnAwareLogger
log *ConnAwareLogger
logTransport *zerolog.Logger
gracefulShutdownC <-chan struct{}
}
@@ -98,6 +100,7 @@ func NewSupervisor(config *TunnelConfig, orchestrator *orchestration.Orchestrato
tunnelsConnecting: map[int]chan struct{}{},
tunnelsProtocolFallback: map[int]*protocolFallback{},
log: log,
logTransport: config.LogTransport,
gracefulShutdownC: gracefulShutdownC,
}, nil
}
+1
View File
@@ -53,6 +53,7 @@ type TunnelConfig struct {
LBPool string
Tags []pogs.Tag
Log *zerolog.Logger
LogTransport *zerolog.Logger
Observer *connection.Observer
ReportedVersion string
Retries uint
+1 -1
View File
@@ -280,7 +280,7 @@ func (s *scriptedTunnelServer) Serve(_ context.Context, _ uint8, _ *protocolFall
func newTestSupervisor(t *testing.T, server TunnelServer) *Supervisor {
t.Helper()
log := zerolog.Nop()
observer := connection.NewObserver(&log)
observer := connection.NewObserver(&log, &log)
tracker := tunnelstate.NewConnTracker(&log)
connAwareLogger := NewConnAwareLogger(&log, tracker, observer)