mirror of
https://github.com/cloudflare/cloudflared.git
synced 2026-10-12 02:12:14 +00:00
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:
@@ -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.",
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user