github.com/divyam234/rclone@v1.64.1/fs/log/syslog_unix.go (about) 1 // Syslog interface for Unix variants only 2 3 //go:build !windows && !nacl && !plan9 4 // +build !windows,!nacl,!plan9 5 6 package log 7 8 import ( 9 "log" 10 "log/syslog" 11 "os" 12 "path" 13 14 "github.com/divyam234/rclone/fs" 15 ) 16 17 var ( 18 syslogFacilityMap = map[string]syslog.Priority{ 19 "KERN": syslog.LOG_KERN, 20 "USER": syslog.LOG_USER, 21 "MAIL": syslog.LOG_MAIL, 22 "DAEMON": syslog.LOG_DAEMON, 23 "AUTH": syslog.LOG_AUTH, 24 "SYSLOG": syslog.LOG_SYSLOG, 25 "LPR": syslog.LOG_LPR, 26 "NEWS": syslog.LOG_NEWS, 27 "UUCP": syslog.LOG_UUCP, 28 "CRON": syslog.LOG_CRON, 29 "AUTHPRIV": syslog.LOG_AUTHPRIV, 30 "FTP": syslog.LOG_FTP, 31 "LOCAL0": syslog.LOG_LOCAL0, 32 "LOCAL1": syslog.LOG_LOCAL1, 33 "LOCAL2": syslog.LOG_LOCAL2, 34 "LOCAL3": syslog.LOG_LOCAL3, 35 "LOCAL4": syslog.LOG_LOCAL4, 36 "LOCAL5": syslog.LOG_LOCAL5, 37 "LOCAL6": syslog.LOG_LOCAL6, 38 "LOCAL7": syslog.LOG_LOCAL7, 39 } 40 ) 41 42 // Starts syslog 43 func startSysLog() bool { 44 facility, ok := syslogFacilityMap[Opt.SyslogFacility] 45 if !ok { 46 log.Fatalf("Unknown syslog facility %q - man syslog for list", Opt.SyslogFacility) 47 } 48 Me := path.Base(os.Args[0]) 49 w, err := syslog.New(syslog.LOG_NOTICE|facility, Me) 50 if err != nil { 51 log.Fatalf("Failed to start syslog: %v", err) 52 } 53 log.SetFlags(0) 54 log.SetOutput(w) 55 fs.LogPrint = func(level fs.LogLevel, text string) { 56 switch level { 57 case fs.LogLevelEmergency: 58 _ = w.Emerg(text) 59 case fs.LogLevelAlert: 60 _ = w.Alert(text) 61 case fs.LogLevelCritical: 62 _ = w.Crit(text) 63 case fs.LogLevelError: 64 _ = w.Err(text) 65 case fs.LogLevelWarning: 66 _ = w.Warning(text) 67 case fs.LogLevelNotice: 68 _ = w.Notice(text) 69 case fs.LogLevelInfo: 70 _ = w.Info(text) 71 case fs.LogLevelDebug: 72 _ = w.Debug(text) 73 } 74 } 75 return true 76 }