mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-30 23:51:03 +01:00 
			
		
		
		
	Create a distinct log section in config
This commit is contained in:
		
							parent
							
								
									7247302f45
								
							
						
					
					
						commit
						dd155dca97
					
				| @ -47,7 +47,7 @@ func initConfig() { | ||||
| 
 | ||||
| 	machineOutput := HasMachineOutputFlag() | ||||
| 
 | ||||
| 	zerolog.SetGlobalLevel(cfg.LogLevel) | ||||
| 	zerolog.SetGlobalLevel(cfg.Log.Level) | ||||
| 
 | ||||
| 	// If the user has requested a "machine" readable format, | ||||
| 	// then disable login so the output remains valid. | ||||
| @ -55,7 +55,7 @@ func initConfig() { | ||||
| 		zerolog.SetGlobalLevel(zerolog.Disabled) | ||||
| 	} | ||||
| 
 | ||||
| 	if cfg.JSONLogs { | ||||
| 	if cfg.Log.Format == headscale.JSONLogFormat { | ||||
| 		log.Logger = log.Output(os.Stdout) | ||||
| 	} | ||||
| 
 | ||||
|  | ||||
| @ -172,8 +172,10 @@ tls_letsencrypt_listen: ":http" | ||||
| tls_cert_path: "" | ||||
| tls_key_path: "" | ||||
| 
 | ||||
| log_level: info | ||||
| json_logs: false | ||||
| log: | ||||
|   # Output formatting for logs: text or json | ||||
|   format: text | ||||
|   level: info | ||||
| 
 | ||||
| # Path to a file containg ACL policies. | ||||
| # ACLs can be defined as YAML or HUJSON. | ||||
|  | ||||
							
								
								
									
										54
									
								
								config.go
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								config.go
									
									
									
									
									
								
							| @ -22,6 +22,9 @@ import ( | ||||
| const ( | ||||
| 	tlsALPN01ChallengeType = "TLS-ALPN-01" | ||||
| 	http01ChallengeType    = "HTTP-01" | ||||
| 
 | ||||
| 	JSONLogFormat = "json" | ||||
| 	TextLogFormat = "text" | ||||
| ) | ||||
| 
 | ||||
| // Config contains the initial Headscale configuration. | ||||
| @ -37,8 +40,7 @@ type Config struct { | ||||
| 	PrivateKeyPath                 string | ||||
| 	NoisePrivateKeyPath            string | ||||
| 	BaseDomain                     string | ||||
| 	LogLevel                       zerolog.Level | ||||
| 	JSONLogs                       bool | ||||
| 	Log                            LogConfig | ||||
| 	DisableUpdateCheck             bool | ||||
| 
 | ||||
| 	DERP DERPConfig | ||||
| @ -125,6 +127,11 @@ type ACLConfig struct { | ||||
| 	PolicyPath string | ||||
| } | ||||
| 
 | ||||
| type LogConfig struct { | ||||
| 	Format string | ||||
| 	Level  zerolog.Level | ||||
| } | ||||
| 
 | ||||
| func LoadConfig(path string, isFile bool) error { | ||||
| 	if isFile { | ||||
| 		viper.SetConfigFile(path) | ||||
| @ -148,8 +155,8 @@ func LoadConfig(path string, isFile bool) error { | ||||
| 	viper.SetDefault("tls_letsencrypt_challenge_type", http01ChallengeType) | ||||
| 	viper.SetDefault("tls_client_auth_mode", "relaxed") | ||||
| 
 | ||||
| 	viper.SetDefault("log_level", "info") | ||||
| 	viper.SetDefault("json_logs", false) | ||||
| 	viper.SetDefault("log.level", "info") | ||||
| 	viper.SetDefault("log.format", TextLogFormat) | ||||
| 
 | ||||
| 	viper.SetDefault("dns_config", nil) | ||||
| 
 | ||||
| @ -336,6 +343,34 @@ func GetACLConfig() ACLConfig { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func GetLogConfig() LogConfig { | ||||
| 	logLevelStr := viper.GetString("log.level") | ||||
| 	logLevel, err := zerolog.ParseLevel(logLevelStr) | ||||
| 	if err != nil { | ||||
| 		logLevel = zerolog.DebugLevel | ||||
| 	} | ||||
| 
 | ||||
| 	logFormatOpt := viper.GetString("log.format") | ||||
| 	var logFormat string | ||||
| 	switch logFormatOpt { | ||||
| 	case "json": | ||||
| 		logFormat = JSONLogFormat | ||||
| 	case "text": | ||||
| 		logFormat = TextLogFormat | ||||
| 	case "": | ||||
| 		logFormat = TextLogFormat | ||||
| 	default: | ||||
| 		log.Error(). | ||||
| 			Str("func", "GetLogConfig"). | ||||
| 			Msgf("Could not parse log format: %s. Valid choices are 'json' or 'text'", logFormatOpt) | ||||
| 	} | ||||
| 
 | ||||
| 	return LogConfig{ | ||||
| 		Format: logFormat, | ||||
| 		Level:  logLevel, | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func GetDNSConfig() (*tailcfg.DNSConfig, string) { | ||||
| 	if viper.IsSet("dns_config") { | ||||
| 		dnsConfig := &tailcfg.DNSConfig{} | ||||
| @ -432,13 +467,6 @@ func GetHeadscaleConfig() (*Config, error) { | ||||
| 	configuredPrefixes := viper.GetStringSlice("ip_prefixes") | ||||
| 	parsedPrefixes := make([]netip.Prefix, 0, len(configuredPrefixes)+1) | ||||
| 
 | ||||
| 	logLevelStr := viper.GetString("log_level") | ||||
| 	logLevel, err := zerolog.ParseLevel(logLevelStr) | ||||
| 	if err != nil { | ||||
| 		logLevel = zerolog.DebugLevel | ||||
| 	} | ||||
| 	jsonLogs := viper.GetBool("json_logs") | ||||
| 
 | ||||
| 	legacyPrefixField := viper.GetString("ip_prefix") | ||||
| 	if len(legacyPrefixField) > 0 { | ||||
| 		log. | ||||
| @ -491,8 +519,6 @@ func GetHeadscaleConfig() (*Config, error) { | ||||
| 		GRPCAddr:           viper.GetString("grpc_listen_addr"), | ||||
| 		GRPCAllowInsecure:  viper.GetBool("grpc_allow_insecure"), | ||||
| 		DisableUpdateCheck: viper.GetBool("disable_check_updates"), | ||||
| 		LogLevel:           logLevel, | ||||
| 		JSONLogs:           jsonLogs, | ||||
| 
 | ||||
| 		IPPrefixes: prefixes, | ||||
| 		PrivateKeyPath: AbsolutePathFromConfigPath( | ||||
| @ -554,5 +580,7 @@ func GetHeadscaleConfig() (*Config, error) { | ||||
| 		}, | ||||
| 
 | ||||
| 		ACL: GetACLConfig(), | ||||
| 
 | ||||
| 		Log: GetLogConfig(), | ||||
| 	}, nil | ||||
| } | ||||
|  | ||||
| @ -28,8 +28,9 @@ ip_prefixes: | ||||
|   - fd7a:115c:a1e0::/48 | ||||
|   - 100.64.0.0/10 | ||||
| listen_addr: 0.0.0.0:18080 | ||||
| log_level: disabled | ||||
| json_logs: false | ||||
| log: | ||||
|   level: disabled | ||||
|   format: text | ||||
| logtail: | ||||
|   enabled: false | ||||
| metrics_listen_addr: 127.0.0.1:19090 | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| log_level: trace | ||||
| log: | ||||
|   level: trace | ||||
| acl_policy_path: "" | ||||
| db_type: sqlite3 | ||||
| ephemeral_node_inactivity_timeout: 30m | ||||
|  | ||||
| @ -27,8 +27,9 @@ ip_prefixes: | ||||
|   - fd7a:115c:a1e0::/48 | ||||
|   - 100.64.0.0/10 | ||||
| listen_addr: 0.0.0.0:18080 | ||||
| log_level: disabled | ||||
| json_logs: false | ||||
| log: | ||||
|   level: disabled | ||||
|   format: text | ||||
| logtail: | ||||
|   enabled: false | ||||
| metrics_listen_addr: 127.0.0.1:19090 | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| log_level: trace | ||||
| log: | ||||
|   level: trace | ||||
| acl_policy_path: "" | ||||
| db_type: sqlite3 | ||||
| ephemeral_node_inactivity_timeout: 30m | ||||
|  | ||||
| @ -28,8 +28,9 @@ ip_prefixes: | ||||
|   - fd7a:115c:a1e0::/48 | ||||
|   - 100.64.0.0/10 | ||||
| listen_addr: 0.0.0.0:8080 | ||||
| log_level: disabled | ||||
| json_logs: false | ||||
| log: | ||||
|   format: text | ||||
|   level: disabled | ||||
| logtail: | ||||
|   enabled: false | ||||
| metrics_listen_addr: 127.0.0.1:9090 | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| log_level: trace | ||||
| log: | ||||
|   level: trace | ||||
| acl_policy_path: "" | ||||
| db_type: sqlite3 | ||||
| ephemeral_node_inactivity_timeout: 30m | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user