mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 03:05:07 +03:00 
			
		
		
		
	Add support for logging to file or syslog instead of stdout
This commit is contained in:
		
							parent
							
								
									2fd3ac6837
								
							
						
					
					
						commit
						93a323c62c
					
				
					 2 changed files with 20 additions and 2 deletions
				
			
		| 
						 | 
					@ -7,6 +7,7 @@ import (
 | 
				
			||||||
	"flag"
 | 
						"flag"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io/ioutil"
 | 
						"io/ioutil"
 | 
				
			||||||
 | 
						"log/syslog"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"os/signal"
 | 
						"os/signal"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
| 
						 | 
					@ -114,6 +115,7 @@ func main() {
 | 
				
			||||||
	autoconf := flag.Bool("autoconf", false, "automatic mode (dynamic IP, peer with IPv6 neighbors)")
 | 
						autoconf := flag.Bool("autoconf", false, "automatic mode (dynamic IP, peer with IPv6 neighbors)")
 | 
				
			||||||
	version := flag.Bool("version", false, "prints the version of this build")
 | 
						version := flag.Bool("version", false, "prints the version of this build")
 | 
				
			||||||
	logging := flag.String("logging", "info,warn,error", "comma-separated list of logging levels to enable")
 | 
						logging := flag.String("logging", "info,warn,error", "comma-separated list of logging levels to enable")
 | 
				
			||||||
 | 
						logto := flag.String("logto", "stdout", "file path to log to, \"syslog\" or \"stdout\"")
 | 
				
			||||||
	flag.Parse()
 | 
						flag.Parse()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var cfg *config.NodeConfig
 | 
						var cfg *config.NodeConfig
 | 
				
			||||||
| 
						 | 
					@ -161,7 +163,23 @@ func main() {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// Create a new logger that logs output to stdout.
 | 
						// Create a new logger that logs output to stdout.
 | 
				
			||||||
	logger := log.New(os.Stdout, "", log.Flags())
 | 
						var logger *log.Logger
 | 
				
			||||||
 | 
						switch *logto {
 | 
				
			||||||
 | 
						case "stdout":
 | 
				
			||||||
 | 
							logger = log.New(os.Stdout, "", log.Flags())
 | 
				
			||||||
 | 
						case "syslog":
 | 
				
			||||||
 | 
							if syslogwriter, err := syslog.New(syslog.LOG_INFO, yggdrasil.BuildName()); err == nil {
 | 
				
			||||||
 | 
								logger = log.New(syslogwriter, "", log.Flags())
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							if logfd, err := os.Create(*logto); err == nil {
 | 
				
			||||||
 | 
								logger = log.New(logfd, "", log.Flags())
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if logger == nil {
 | 
				
			||||||
 | 
							logger = log.New(os.Stdout, "", log.Flags())
 | 
				
			||||||
 | 
							logger.Warnln("Logging defaulting to stdout")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	//logger.EnableLevel("error")
 | 
						//logger.EnableLevel("error")
 | 
				
			||||||
	//logger.EnableLevel("warn")
 | 
						//logger.EnableLevel("warn")
 | 
				
			||||||
	//logger.EnableLevel("info")
 | 
						//logger.EnableLevel("info")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -232,7 +232,7 @@ func (c *Core) GetSessions() []Session {
 | 
				
			||||||
// from git, or returns "unknown" otherwise.
 | 
					// from git, or returns "unknown" otherwise.
 | 
				
			||||||
func BuildName() string {
 | 
					func BuildName() string {
 | 
				
			||||||
	if buildName == "" {
 | 
						if buildName == "" {
 | 
				
			||||||
		return "unknown"
 | 
							return "yggdrasil"
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return buildName
 | 
						return buildName
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue