mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 03:12:25 -05:00 
			
		
		
		
	Add optional syslog logrus hook (#343)
* add optional syslog logrus hook * document syslog
This commit is contained in:
		
					parent
					
						
							
								909f801742
							
						
					
				
			
			
				commit
				
					
						c111b239f7
					
				
			
		
					 38 changed files with 2242 additions and 37 deletions
				
			
		
							
								
								
									
										39
									
								
								vendor/github.com/sirupsen/logrus/hooks/syslog/README.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								vendor/github.com/sirupsen/logrus/hooks/syslog/README.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,39 @@ | |||
| # Syslog Hooks for Logrus <img src="http://i.imgur.com/hTeVwmJ.png" width="40" height="40" alt=":walrus:" class="emoji" title=":walrus:"/> | ||||
| 
 | ||||
| ## Usage | ||||
| 
 | ||||
| ```go | ||||
| import ( | ||||
|   "log/syslog" | ||||
|   "github.com/sirupsen/logrus" | ||||
|   lSyslog "github.com/sirupsen/logrus/hooks/syslog" | ||||
| ) | ||||
| 
 | ||||
| func main() { | ||||
|   log       := logrus.New() | ||||
|   hook, err := lSyslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "") | ||||
| 
 | ||||
|   if err == nil { | ||||
|     log.Hooks.Add(hook) | ||||
|   } | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| If you want to connect to local syslog (Ex. "/dev/log" or "/var/run/syslog" or "/var/run/log"). Just assign empty string to the first two parameters of `NewSyslogHook`. It should look like the following. | ||||
| 
 | ||||
| ```go | ||||
| import ( | ||||
|   "log/syslog" | ||||
|   "github.com/sirupsen/logrus" | ||||
|   lSyslog "github.com/sirupsen/logrus/hooks/syslog" | ||||
| ) | ||||
| 
 | ||||
| func main() { | ||||
|   log       := logrus.New() | ||||
|   hook, err := lSyslog.NewSyslogHook("", "", syslog.LOG_INFO, "") | ||||
| 
 | ||||
|   if err == nil { | ||||
|     log.Hooks.Add(hook) | ||||
|   } | ||||
| } | ||||
| ``` | ||||
							
								
								
									
										55
									
								
								vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,55 @@ | |||
| // +build !windows,!nacl,!plan9 | ||||
| 
 | ||||
| package syslog | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"log/syslog" | ||||
| 	"os" | ||||
| 
 | ||||
| 	"github.com/sirupsen/logrus" | ||||
| ) | ||||
| 
 | ||||
| // SyslogHook to send logs via syslog. | ||||
| type SyslogHook struct { | ||||
| 	Writer        *syslog.Writer | ||||
| 	SyslogNetwork string | ||||
| 	SyslogRaddr   string | ||||
| } | ||||
| 
 | ||||
| // Creates a hook to be added to an instance of logger. This is called with | ||||
| // `hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_DEBUG, "")` | ||||
| // `if err == nil { log.Hooks.Add(hook) }` | ||||
| func NewSyslogHook(network, raddr string, priority syslog.Priority, tag string) (*SyslogHook, error) { | ||||
| 	w, err := syslog.Dial(network, raddr, priority, tag) | ||||
| 	return &SyslogHook{w, network, raddr}, err | ||||
| } | ||||
| 
 | ||||
| func (hook *SyslogHook) Fire(entry *logrus.Entry) error { | ||||
| 	line, err := entry.String() | ||||
| 	if err != nil { | ||||
| 		fmt.Fprintf(os.Stderr, "Unable to read entry, %v", err) | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	switch entry.Level { | ||||
| 	case logrus.PanicLevel: | ||||
| 		return hook.Writer.Crit(line) | ||||
| 	case logrus.FatalLevel: | ||||
| 		return hook.Writer.Crit(line) | ||||
| 	case logrus.ErrorLevel: | ||||
| 		return hook.Writer.Err(line) | ||||
| 	case logrus.WarnLevel: | ||||
| 		return hook.Writer.Warning(line) | ||||
| 	case logrus.InfoLevel: | ||||
| 		return hook.Writer.Info(line) | ||||
| 	case logrus.DebugLevel, logrus.TraceLevel: | ||||
| 		return hook.Writer.Debug(line) | ||||
| 	default: | ||||
| 		return nil | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (hook *SyslogHook) Levels() []logrus.Level { | ||||
| 	return logrus.AllLevels | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue