Skip to content

Commit cad58b9

Browse files
committed
TUN-3561: Unified logger configuration
1 parent 78cb60b commit cad58b9

File tree

16 files changed

+230
-124
lines changed

16 files changed

+230
-124
lines changed

cmd/cloudflared/access/carrier.go

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"github.com/cloudflare/cloudflared/logger"
1212
"github.com/cloudflare/cloudflared/validation"
1313
"github.com/pkg/errors"
14-
cli "github.com/urfave/cli/v2"
14+
"github.com/urfave/cli/v2"
1515
)
1616

1717
// StartForwarder starts a client side websocket forward
@@ -52,19 +52,7 @@ func StartForwarder(forwarder config.Forwarder, shutdown <-chan struct{}, logger
5252
// useful for proxying other protocols (like ssh) over websockets
5353
// (which you can put Access in front of)
5454
func ssh(c *cli.Context) error {
55-
logDirectory, logLevel := config.FindLogSettings()
56-
57-
flagLogDirectory := c.String(sshLogDirectoryFlag)
58-
if flagLogDirectory != "" {
59-
logDirectory = flagLogDirectory
60-
}
61-
62-
flagLogLevel := c.String(sshLogLevelFlag)
63-
if flagLogLevel != "" {
64-
logLevel = flagLogLevel
65-
}
66-
67-
logger, err := logger.New(logger.DefaultFile(logDirectory), logger.LogLevelString(logLevel))
55+
logger, err := logger.CreateSSHLoggerFromContext(c, logger.EnableTerminalLog)
6856
if err != nil {
6957
return cliutil.PrintLoggerSetupError("error setting up logger", err)
7058
}

cmd/cloudflared/access/cmd.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,14 @@ import (
2525
)
2626

2727
const (
28-
sshHostnameFlag = "hostname"
29-
sshDestinationFlag = "destination"
30-
sshURLFlag = "url"
31-
sshHeaderFlag = "header"
32-
sshTokenIDFlag = "service-token-id"
33-
sshTokenSecretFlag = "service-token-secret"
34-
sshGenCertFlag = "short-lived-cert"
35-
sshLogDirectoryFlag = "log-directory"
36-
sshLogLevelFlag = "log-level"
37-
sshConfigTemplate = `
28+
sshHostnameFlag = "hostname"
29+
sshDestinationFlag = "destination"
30+
sshURLFlag = "url"
31+
sshHeaderFlag = "header"
32+
sshTokenIDFlag = "service-token-id"
33+
sshTokenSecretFlag = "service-token-secret"
34+
sshGenCertFlag = "short-lived-cert"
35+
sshConfigTemplate = `
3836
Add to your {{.Home}}/.ssh/config:
3937
4038
Host {{.Hostname}}
@@ -157,12 +155,12 @@ func Commands() []*cli.Command {
157155
Usage: "specify an Access service token secret you wish to use.",
158156
},
159157
&cli.StringFlag{
160-
Name: sshLogDirectoryFlag,
158+
Name: logger.LogSSHDirectoryFlag,
161159
Aliases: []string{"logfile"}, //added to match the tunnel side
162160
Usage: "Save application log to this directory for reporting issues.",
163161
},
164162
&cli.StringFlag{
165-
Name: sshLogLevelFlag,
163+
Name: logger.LogSSHLevelFlag,
166164
Aliases: []string{"loglevel"}, //added to match the tunnel side
167165
Usage: "Application logging level {fatal, error, info, debug}. ",
168166
},
@@ -207,7 +205,7 @@ func login(c *cli.Context) error {
207205
return err
208206
}
209207

210-
logger, err := logger.New()
208+
logger, err := logger.CreateLoggerFromContext(c, logger.EnableTerminalLog)
211209
if err != nil {
212210
return errors.Wrap(err, "error setting up logger")
213211
}
@@ -252,7 +250,7 @@ func curl(c *cli.Context) error {
252250
if err := raven.SetDSN(sentryDSN); err != nil {
253251
return err
254252
}
255-
logger, err := logger.New()
253+
logger, err := logger.CreateLoggerFromContext(c, logger.EnableTerminalLog)
256254
if err != nil {
257255
return errors.Wrap(err, "error setting up logger")
258256
}
@@ -331,7 +329,7 @@ func sshConfig(c *cli.Context) error {
331329

332330
// sshGen generates a short lived certificate for provided hostname
333331
func sshGen(c *cli.Context) error {
334-
logger, err := logger.New()
332+
logger, err := logger.CreateLoggerFromContext(c, logger.EnableTerminalLog)
335333
if err != nil {
336334
return errors.Wrap(err, "error setting up logger")
337335
}

cmd/cloudflared/app_service.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ func (s *AppService) Run() error {
3737
func (s *AppService) Shutdown() error {
3838
s.configManager.Shutdown()
3939
s.shutdownC <- struct{}{}
40+
4041
return nil
4142
}
4243

cmd/cloudflared/config/configuration.go

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -151,35 +151,6 @@ func FindOrCreateConfigPath() string {
151151
return path
152152
}
153153

154-
// FindLogSettings gets the log directory and level from the config file
155-
func FindLogSettings() (string, string) {
156-
configPath := FindOrCreateConfigPath()
157-
defaultDirectory := DefaultLogDirectory()
158-
defaultLevel := "info"
159-
160-
file, err := os.Open(configPath)
161-
if err != nil {
162-
return defaultDirectory, defaultLevel
163-
}
164-
defer file.Close()
165-
166-
var config Root
167-
if err := yaml.NewDecoder(file).Decode(&config); err != nil {
168-
return defaultDirectory, defaultLevel
169-
}
170-
171-
directory := defaultDirectory
172-
if config.LogDirectory != "" {
173-
directory = config.LogDirectory
174-
}
175-
176-
level := defaultLevel
177-
if config.LogLevel != "" {
178-
level = config.LogLevel
179-
}
180-
return directory, level
181-
}
182-
183154
// ValidateUnixSocket ensures --unix-socket param is used exclusively
184155
// i.e. it fails if a user specifies both --url and --unix-socket
185156
func ValidateUnixSocket(c *cli.Context) (string, error) {

cmd/cloudflared/linux_service.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ func copyUserConfiguration(userConfigDir, userConfigFile, userCredentialFile str
211211
}
212212

213213
func installLinuxService(c *cli.Context) error {
214-
logger, err := logger.New()
214+
logger, err := logger.CreateLoggerFromContext(c, logger.EnableTerminalLog)
215215
if err != nil {
216216
return errors.Wrap(err, "error setting up logger")
217217
}
@@ -325,7 +325,7 @@ func installSysv(templateArgs *ServiceTemplateArgs, logger logger.Service) error
325325
}
326326

327327
func uninstallLinuxService(c *cli.Context) error {
328-
logger, err := logger.New()
328+
logger, err := logger.CreateLoggerFromContext(c, logger.EnableTerminalLog)
329329
if err != nil {
330330
return errors.Wrap(err, "error setting up logger")
331331
}

cmd/cloudflared/macos_service.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ import (
66
"fmt"
77
"os"
88

9-
"github.com/urfave/cli/v2"
10-
119
"github.com/cloudflare/cloudflared/cmd/cloudflared/cliutil"
1210
"github.com/cloudflare/cloudflared/logger"
11+
1312
"github.com/pkg/errors"
13+
"github.com/urfave/cli/v2"
1414
)
1515

1616
const (
@@ -107,7 +107,7 @@ func stderrPath() (string, error) {
107107
}
108108

109109
func installLaunchd(c *cli.Context) error {
110-
logger, err := logger.New()
110+
logger, err := logger.CreateLoggerFromContext(c, logger.EnableTerminalLog)
111111
if err != nil {
112112
return errors.Wrap(err, "error setting up logger")
113113
}
@@ -163,7 +163,7 @@ func installLaunchd(c *cli.Context) error {
163163
}
164164

165165
func uninstallLaunchd(c *cli.Context) error {
166-
logger, err := logger.New()
166+
logger, err := logger.CreateLoggerFromContext(c, logger.EnableTerminalLog)
167167
if err != nil {
168168
return errors.Wrap(err, "error setting up logger")
169169
}

cmd/cloudflared/main.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,9 @@ import (
1515
"github.com/cloudflare/cloudflared/overwatch"
1616
"github.com/cloudflare/cloudflared/tunneldns"
1717
"github.com/cloudflare/cloudflared/watcher"
18-
19-
raven "github.com/getsentry/raven-go"
20-
homedir "github.com/mitchellh/go-homedir"
21-
cli "github.com/urfave/cli/v2"
18+
"github.com/getsentry/raven-go"
19+
"github.com/mitchellh/go-homedir"
20+
"github.com/urfave/cli/v2"
2221

2322
"github.com/pkg/errors"
2423
)
@@ -147,7 +146,7 @@ func isEmptyInvocation(c *cli.Context) bool {
147146
func action(version string, shutdownC, graceShutdownC chan struct{}) cli.ActionFunc {
148147
return cliutil.ErrorHandler(func(c *cli.Context) (err error) {
149148
if isEmptyInvocation(c) {
150-
return handleServiceMode(shutdownC)
149+
return handleServiceMode(c, shutdownC)
151150
}
152151
tags := make(map[string]string)
153152
tags["hostname"] = c.String("hostname")
@@ -184,15 +183,13 @@ func captureError(err error) {
184183
}
185184

186185
// cloudflared was started without any flags
187-
func handleServiceMode(shutdownC chan struct{}) error {
186+
func handleServiceMode(c *cli.Context, shutdownC chan struct{}) error {
188187
defer log.SharedWriteManager.Shutdown()
189-
logDirectory, logLevel := config.FindLogSettings()
190188

191-
logger, err := log.New(log.DefaultFile(logDirectory), log.LogLevelString(logLevel))
189+
logger, err := log.CreateLoggerFromContext(c, log.DisableTerminalLog)
192190
if err != nil {
193191
return cliutil.PrintLoggerSetupError("error setting up logger", err)
194192
}
195-
logger.Infof("logging to directory: %s", logDirectory)
196193

197194
// start the main run loop that reads from the config file
198195
f, err := watcher.NewFile()

cmd/cloudflared/tunnel/cmd.go

Lines changed: 6 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,6 @@ const (
7777
// uiFlag is to enable launching cloudflared in interactive UI mode
7878
uiFlag = "ui"
7979

80-
logDirectoryFlag = "log-directory"
81-
8280
debugLevelWarning = "At debug level, request URL, method, protocol, content legnth and header will be logged. " +
8381
"Response status, content length and header will also be logged in debug level."
8482
)
@@ -209,40 +207,6 @@ func routeFromFlag(c *cli.Context) (tunnelstore.Route, bool) {
209207
return nil, false
210208
}
211209

212-
func createLogger(c *cli.Context, isTransport bool, disableTerminal bool) (*logger.OutputWriter, error) {
213-
var loggerOpts []logger.Option
214-
215-
logPath := c.String("logfile")
216-
if logPath == "" {
217-
logPath = c.String(logDirectoryFlag)
218-
}
219-
220-
if logPath != "" {
221-
loggerOpts = append(loggerOpts, logger.DefaultFile(logPath))
222-
}
223-
224-
logLevel := c.String("loglevel")
225-
if isTransport {
226-
logLevel = c.String("transport-loglevel")
227-
if logLevel == "" {
228-
logLevel = "fatal"
229-
}
230-
}
231-
loggerOpts = append(loggerOpts, logger.LogLevelString(logLevel))
232-
233-
if disableTerminal {
234-
disableOption := logger.DisableTerminal(true)
235-
loggerOpts = append(loggerOpts, disableOption)
236-
}
237-
238-
l, err := logger.New(loggerOpts...)
239-
if err != nil {
240-
return nil, err
241-
}
242-
243-
return l, nil
244-
}
245-
246210
func StartServer(
247211
c *cli.Context,
248212
version string,
@@ -362,7 +326,7 @@ func StartServer(
362326
return fmt.Errorf(errText)
363327
}
364328

365-
transportLogger, err := createLogger(c, true, isUIEnabled)
329+
transportLogger, err := logger.CreateTransportLoggerFromContext(c, isUIEnabled)
366330
if err != nil {
367331
return errors.Wrap(err, "error setting up transport logger")
368332
}
@@ -416,7 +380,7 @@ func forceSetFlag(c *cli.Context, name, value string) {
416380

417381
func SetFlagsFromConfigFile(c *cli.Context) error {
418382
const exitCode = 1
419-
log, err := createLogger(c, false, false)
383+
log, err := logger.CreateLoggerFromContext(c, logger.EnableTerminalLog)
420384
if err != nil {
421385
return cliutil.PrintLoggerSetupError("error setting up logger", err)
422386
}
@@ -974,28 +938,28 @@ func sshFlags(shouldHide bool) []cli.Flag {
974938
func configureLoggingFlags(shouldHide bool) []cli.Flag {
975939
return []cli.Flag{
976940
altsrc.NewStringFlag(&cli.StringFlag{
977-
Name: "loglevel",
941+
Name: logger.LogLevelFlag,
978942
Value: "info",
979943
Usage: "Application logging level {fatal, error, info, debug}. " + debugLevelWarning,
980944
EnvVars: []string{"TUNNEL_LOGLEVEL"},
981945
Hidden: shouldHide,
982946
}),
983947
altsrc.NewStringFlag(&cli.StringFlag{
984-
Name: "transport-loglevel",
948+
Name: logger.LogTransportLevelFlag,
985949
Aliases: []string{"proto-loglevel"}, // This flag used to be called proto-loglevel
986950
Value: "info",
987951
Usage: "Transport logging level(previously called protocol logging level) {fatal, error, info, debug}",
988952
EnvVars: []string{"TUNNEL_PROTO_LOGLEVEL", "TUNNEL_TRANSPORT_LOGLEVEL"},
989953
Hidden: shouldHide,
990954
}),
991955
altsrc.NewStringFlag(&cli.StringFlag{
992-
Name: "logfile",
956+
Name: logger.LogFileFlag,
993957
Usage: "Save application log to this file for reporting issues.",
994958
EnvVars: []string{"TUNNEL_LOGFILE"},
995959
Hidden: shouldHide,
996960
}),
997961
altsrc.NewStringFlag(&cli.StringFlag{
998-
Name: logDirectoryFlag,
962+
Name: logger.LogDirectoryFlag,
999963
Usage: "Save application log to this directory for reporting issues.",
1000964
EnvVars: []string{"TUNNEL_LOGDIRECTORY"},
1001965
Hidden: shouldHide,

cmd/cloudflared/tunnel/login.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func buildLoginSubcommand(hidden bool) *cli.Command {
3939
}
4040

4141
func login(c *cli.Context) error {
42-
logger, err := logger.New()
42+
logger, err := logger.CreateLoggerFromContext(c, logger.EnableTerminalLog)
4343
if err != nil {
4444
return errors.Wrap(err, "error setting up logger")
4545
}

cmd/cloudflared/tunnel/subcommand_context.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func newSubcommandContext(c *cli.Context) (*subcommandContext, error) {
4646
isUIEnabled := c.IsSet(uiFlag) && c.String("name") != ""
4747

4848
// If UI is enabled, terminal log output should be disabled -- log should be written into a UI log window instead
49-
logger, err := createLogger(c, false, isUIEnabled)
49+
logger, err := logger.CreateLoggerFromContext(c, isUIEnabled)
5050
if err != nil {
5151
return nil, errors.Wrap(err, "error setting up logger")
5252
}

0 commit comments

Comments
 (0)