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