From 259923b3030b244f7bacf884a74fe76ecefffcb0 Mon Sep 17 00:00:00 2001 From: Gabe Kangas Date: Mon, 6 Jul 2020 21:27:31 -0700 Subject: [PATCH] Set logging preferences via command line flags. Closes #20 --- core/chat/server.go | 4 ++-- core/core.go | 8 ++++---- core/ffmpeg/thumbnailGenerator.go | 2 +- core/ffmpeg/transcoder.go | 2 +- core/playlist/monitor.go | 2 +- core/rtmp/handler.go | 2 +- core/rtmp/rtmp.go | 2 +- core/stats.go | 2 +- core/storageproviders/ipfsStorage.go | 6 +++--- core/storageproviders/s3Storage.go | 6 +++--- main.go | 22 +++++++++++++++++++--- router/router.go | 2 +- 12 files changed, 38 insertions(+), 22 deletions(-) diff --git a/core/chat/server.go b/core/chat/server.go index 366f4a1db..110780bcb 100644 --- a/core/chat/server.go +++ b/core/chat/server.go @@ -95,7 +95,7 @@ func (s *server) onConnection(ws *websocket.Conn) { func (s *server) Listen() { http.Handle(s.pattern, websocket.Handler(s.onConnection)) - log.Printf("Starting the websocket listener on: %s", s.pattern) + log.Tracef("Starting the websocket listener on: %s", s.pattern) for { select { @@ -121,7 +121,7 @@ func (s *server) Listen() { fmt.Println("PING?", ping) case err := <-s.errCh: - log.Println("Error:", err.Error()) + log.Error("Error:", err.Error()) case <-s.doneCh: return diff --git a/core/core.go b/core/core.go index 3fd4d6190..3469f0627 100644 --- a/core/core.go +++ b/core/core.go @@ -24,17 +24,17 @@ func Start() error { resetDirectories() if err := setupStats(); err != nil { - log.Println("failed to setup the stats") + log.Error("failed to setup the stats") return err } if err := setupStorage(); err != nil { - log.Println("failed to setup the storage") + log.Error("failed to setup the storage") return err } if err := createInitialOfflineState(); err != nil { - log.Println("failed to create the initial offline state") + log.Error("failed to create the initial offline state") return err } @@ -57,7 +57,7 @@ func createInitialOfflineState() error { } func resetDirectories() { - log.Println("Resetting file directories to a clean slate.") + log.Trace("Resetting file directories to a clean slate.") // Wipe the public, web-accessible hls data directory os.RemoveAll(config.Config.PublicHLSPath) diff --git a/core/ffmpeg/thumbnailGenerator.go b/core/ffmpeg/thumbnailGenerator.go index 5c7ec054c..cd5ecde13 100644 --- a/core/ffmpeg/thumbnailGenerator.go +++ b/core/ffmpeg/thumbnailGenerator.go @@ -29,7 +29,7 @@ func StartThumbnailGenerator(chunkPath string, variantIndex int) { } case <-quit: //TODO: evaluate if this is ever stopped - log.Println("thumbnail generator has stopped") + log.Debug("thumbnail generator has stopped") ticker.Stop() return } diff --git a/core/ffmpeg/transcoder.go b/core/ffmpeg/transcoder.go index 9ab5c2a45..cae4bd5d3 100644 --- a/core/ffmpeg/transcoder.go +++ b/core/ffmpeg/transcoder.go @@ -65,7 +65,7 @@ func (v *VideoSize) getString() string { func (t *Transcoder) Start() { command := t.getString() - log.Printf("Video transcoder started with %d stream variants.", len(t.variants)) + log.Tracef("Video transcoder started with %d stream variants.", len(t.variants)) _, err := exec.Command("sh", "-c", command).Output() if err != nil { diff --git a/core/playlist/monitor.go b/core/playlist/monitor.go index de7869bc8..a010ba420 100644 --- a/core/playlist/monitor.go +++ b/core/playlist/monitor.go @@ -76,7 +76,7 @@ func StartVideoContentMonitor(storage models.ChunkStorageProvider) error { } else if filepath.Ext(event.Path) == ".ts" { segment, err := getSegmentFromPath(event.Path) if err != nil { - log.Println("failed to get the segment from path") + log.Error("failed to get the segment from path") panic(err) } diff --git a/core/rtmp/handler.go b/core/rtmp/handler.go index 450a70133..035ba44e0 100644 --- a/core/rtmp/handler.go +++ b/core/rtmp/handler.go @@ -49,7 +49,7 @@ func (h *Handler) OnCreateStream(timestamp uint32, cmd *rtmpmsg.NetConnectionCre //OnPublish handles the "OnPublish" of the rtmp service func (h *Handler) OnPublish(timestamp uint32, cmd *rtmpmsg.NetStreamPublish) error { // log.Printf("OnPublish: %#v", cmd) - log.Println("Incoming stream connected.") + log.Trace("Incoming stream connected.") if cmd.PublishingName != config.Config.VideoSettings.StreamingKey { return errors.New("invalid streaming key; rejecting incoming stream") diff --git a/core/rtmp/rtmp.go b/core/rtmp/rtmp.go index 31f3ea701..f0a39ccb3 100644 --- a/core/rtmp/rtmp.go +++ b/core/rtmp/rtmp.go @@ -45,7 +45,7 @@ func Start() { }, }) - log.Printf("RTMP server is listening for incoming stream on port: %d", port) + log.Infof("RTMP server is listening for incoming stream on port: %d", port) if err := srv.Serve(listener); err != nil { log.Panicf("Failed to serve the rtmp service: %+v", err) } diff --git a/core/stats.go b/core/stats.go index fad5d1ccf..f210461db 100644 --- a/core/stats.go +++ b/core/stats.go @@ -88,7 +88,7 @@ func SetClientActive(clientID string) { //RemoveClient removes a client from the active clients record func RemoveClient(clientID string) { - log.Println("Removing the client:", clientID) + log.Trace("Removing the client:", clientID) delete(_stats.Clients, clientID) } diff --git a/core/storageproviders/ipfsStorage.go b/core/storageproviders/ipfsStorage.go index 5642628c2..320c8b7b9 100644 --- a/core/storageproviders/ipfsStorage.go +++ b/core/storageproviders/ipfsStorage.go @@ -44,7 +44,7 @@ type IPFSStorage struct { //Setup sets up the ipfs storage for saving the video to ipfs func (s *IPFSStorage) Setup() error { - log.Println("Setting up IPFS for external storage of video. Please wait..") + log.Trace("Setting up IPFS for external storage of video. Please wait..") s.gateway = ownconfig.Config.IPFS.Gateway @@ -267,9 +267,9 @@ func (s *IPFSStorage) createIPFSInstance() (*icore.CoreAPI, *core.IpfsNode, erro } func (s *IPFSStorage) startIPFSNode() { //} icore.CoreAPI { - defer log.Println("IPFS node exited") + defer log.Debug("IPFS node exited") - log.Println("IPFS node is running") + log.Trace("IPFS node is running") bootstrapNodes := []string{ // IPFS Bootstrapper nodes. diff --git a/core/storageproviders/s3Storage.go b/core/storageproviders/s3Storage.go index f29c79483..499e7f04c 100644 --- a/core/storageproviders/s3Storage.go +++ b/core/storageproviders/s3Storage.go @@ -30,7 +30,7 @@ type S3Storage struct { //Setup sets up the s3 storage for saving the video to s3 func (s *S3Storage) Setup() error { - log.Println("Setting up S3 for external storage of video...") + log.Trace("Setting up S3 for external storage of video...") s.s3Endpoint = config.Config.S3.Endpoint s.s3Region = config.Config.S3.Region @@ -62,9 +62,9 @@ func (s *S3Storage) Save(filePath string, retryCount int) (string, error) { }) if err != nil { - log.Errorln("error uploading:", err.Error()) + log.Trace("error uploading:", err.Error()) if retryCount < 4 { - log.Println("Retrying...") + log.Trace("Retrying...") return s.Save(filePath, retryCount+1) } } diff --git a/main.go b/main.go index 473625acb..292a74e2b 100644 --- a/main.go +++ b/main.go @@ -23,10 +23,13 @@ var ( ) func main() { - log.Println(getVersion()) + configureLogging() + + log.Infoln(getVersion()) configFile := flag.String("configFile", "config.yaml", "Config File full path. Defaults to current folder") enableDebugOptions := flag.Bool("enableDebugFeatures", false, "Enable additional debugging options.") + enableVerboseLogging := flag.Bool("enableVerboseLogging", false, "Enable additional logging.") flag.Parse() @@ -34,23 +37,36 @@ func main() { logrus.SetReportCaller(true) } + if *enableVerboseLogging { + log.SetLevel(log.TraceLevel) + } else { + log.SetLevel(log.InfoLevel) + } + if err := config.Load(*configFile, getVersion()); err != nil { panic(err) } // starts the core if err := core.Start(); err != nil { - log.Println("failed to start the core package") + log.Error("failed to start the core package") panic(err) } if err := router.Start(); err != nil { - log.Println("failed to start/run the router") + log.Error("failed to start/run the router") panic(err) } + } //getVersion gets the version string func getVersion() string { return fmt.Sprintf("Owncast v%s-%s (%s)", BuildVersion, BuildType, GitCommit) } + +func configureLogging() { + log.SetFormatter(&log.TextFormatter{ + FullTimestamp: true, + }) +} diff --git a/router/router.go b/router/router.go index a7dd6ae89..ac5821c2e 100644 --- a/router/router.go +++ b/router/router.go @@ -34,7 +34,7 @@ func Start() error { port := config.Config.WebServerPort - log.Printf("Starting public web server on port: %d", port) + log.Infof("Web server running on port: %d", port) return http.ListenAndServe(fmt.Sprintf(":%d", port), nil) }