init.go (1661B)
1 // GoToSocial 2 // Copyright (C) GoToSocial Authors admin@gotosocial.org 3 // SPDX-License-Identifier: AGPL-3.0-or-later 4 // 5 // This program is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU Affero General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // This program is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU Affero General Public License for more details. 14 // 15 // You should have received a copy of the GNU Affero General Public License 16 // along with this program. If not, see <http://www.gnu.org/licenses/>. 17 18 package log 19 20 import ( 21 "fmt" 22 "log/syslog" 23 "strings" 24 25 "codeberg.org/gruf/go-logger/v2/level" 26 ) 27 28 // ParseLevel will parse the log level from given string and set to appropriate level. 29 func ParseLevel(str string) error { 30 switch strings.ToLower(str) { 31 case "trace": 32 SetLevel(level.TRACE) 33 case "debug": 34 SetLevel(level.DEBUG) 35 case "", "info": 36 SetLevel(level.INFO) 37 case "warn": 38 SetLevel(level.WARN) 39 case "error": 40 SetLevel(level.ERROR) 41 case "fatal": 42 SetLevel(level.FATAL) 43 default: 44 return fmt.Errorf("unknown log level: %q", str) 45 } 46 return nil 47 } 48 49 // EnableSyslog will enabling logging to the syslog at given address. 50 func EnableSyslog(proto, addr string) error { 51 // Dial a connection to the syslog daemon 52 writer, err := syslog.Dial(proto, addr, 0, "gotosocial") 53 if err != nil { 54 return err 55 } 56 57 // Set the syslog writer 58 sysout = writer 59 60 return nil 61 }