1
0

log.go 1.4 KB

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