github.com/v2fly/v2ray-core/v5@v5.16.2-0.20240507031116-8191faa6e095/infra/conf/synthetic/log/log.go (about)

     1  package log
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/v2fly/v2ray-core/v5/app/log"
     7  	clog "github.com/v2fly/v2ray-core/v5/common/log"
     8  )
     9  
    10  func DefaultLogConfig() *log.Config {
    11  	return &log.Config{
    12  		Access: &log.LogSpecification{Type: log.LogType_None},
    13  		Error:  &log.LogSpecification{Type: log.LogType_Console, Level: clog.Severity_Warning},
    14  	}
    15  }
    16  
    17  type LogConfig struct { // nolint: revive
    18  	AccessLog string `json:"access"`
    19  	ErrorLog  string `json:"error"`
    20  	LogLevel  string `json:"loglevel"`
    21  }
    22  
    23  func (v *LogConfig) Build() *log.Config {
    24  	if v == nil {
    25  		return nil
    26  	}
    27  	config := &log.Config{
    28  		Access: &log.LogSpecification{Type: log.LogType_Console},
    29  		Error:  &log.LogSpecification{Type: log.LogType_Console},
    30  	}
    31  
    32  	if v.AccessLog == "none" {
    33  		config.Access.Type = log.LogType_None
    34  	} else if len(v.AccessLog) > 0 {
    35  		config.Access.Path = v.AccessLog
    36  		config.Access.Type = log.LogType_File
    37  	}
    38  	if v.ErrorLog == "none" {
    39  		config.Error.Type = log.LogType_None
    40  	} else if len(v.ErrorLog) > 0 {
    41  		config.Error.Path = v.ErrorLog
    42  		config.Error.Type = log.LogType_File
    43  	}
    44  
    45  	level := strings.ToLower(v.LogLevel)
    46  	switch level {
    47  	case "debug":
    48  		config.Error.Level = clog.Severity_Debug
    49  	case "info":
    50  		config.Error.Level = clog.Severity_Info
    51  	case "error":
    52  		config.Error.Level = clog.Severity_Error
    53  	case "none":
    54  		config.Error.Type = log.LogType_None
    55  		config.Error.Type = log.LogType_None
    56  	default:
    57  		config.Error.Level = clog.Severity_Warning
    58  	}
    59  	return config
    60  }