mirror of
https://github.com/haiwen/seafile-server.git
synced 2025-04-27 19:15:07 +00:00
Format notification server log and redirect stderr to log (#707)
* Format notification server log and redirect stderr to log * Set http server error log * Delete unused file * Modify pkg name --------- Co-authored-by: 杨赫然 <heran.yang@seafile.com>
This commit is contained in:
parent
5899f110b9
commit
abe4537648
@ -30,6 +30,7 @@ import (
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"gopkg.in/ini.v1"
|
||||
stdlog "log"
|
||||
|
||||
"net/http/pprof"
|
||||
)
|
||||
@ -374,17 +375,6 @@ func main() {
|
||||
log.SetLevel(level)
|
||||
}
|
||||
|
||||
if absLogFile != "" {
|
||||
errorLogFile := filepath.Join(filepath.Dir(absLogFile), "fileserver-error.log")
|
||||
fp, err := os.OpenFile(errorLogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to open or create error log file: %v", err)
|
||||
}
|
||||
syscall.Dup3(int(fp.Fd()), int(os.Stderr.Fd()), 0)
|
||||
// We need to close the old fp, because it has beed duped.
|
||||
fp.Close()
|
||||
}
|
||||
|
||||
if err := option.LoadSeahubConfig(); err != nil {
|
||||
log.Fatalf("Failed to read seahub config: %v", err)
|
||||
}
|
||||
@ -418,8 +408,14 @@ func main() {
|
||||
|
||||
log.Print("Seafile file server started.")
|
||||
|
||||
addr := fmt.Sprintf("%s:%d", option.Host, option.Port)
|
||||
err = http.ListenAndServe(addr, router)
|
||||
server := new(http.Server)
|
||||
server.Addr = fmt.Sprintf("%s:%d", option.Host, option.Port)
|
||||
server.Handler = router
|
||||
|
||||
errorLog := stdlog.New(log.StandardLogger().Writer(), "", 0)
|
||||
server.ErrorLog = errorLog
|
||||
|
||||
err = server.ListenAndServe()
|
||||
if err != nil {
|
||||
log.Printf("File server exiting: %v", err)
|
||||
}
|
||||
@ -457,14 +453,6 @@ func logRotate() {
|
||||
logFp.Close()
|
||||
logFp = fp
|
||||
}
|
||||
|
||||
errorLogFile := filepath.Join(filepath.Dir(absLogFile), "fileserver-error.log")
|
||||
errFp, err := os.OpenFile(errorLogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to reopen fileserver error log: %v", err)
|
||||
}
|
||||
syscall.Dup3(int(errFp.Fd()), int(os.Stderr.Fd()), 0)
|
||||
errFp.Close()
|
||||
}
|
||||
|
||||
var rpcclient *searpc.Client
|
||||
|
@ -1,18 +1,36 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
const (
|
||||
timestampFormat = "2006/01/02 15:04:05 "
|
||||
timestampFormat = "[2006-01-02 15:04:05] "
|
||||
)
|
||||
|
||||
type LogFormatter struct{}
|
||||
|
||||
func (f *LogFormatter) Format(entry *log.Entry) ([]byte, error) {
|
||||
buf := make([]byte, 0, len(timestampFormat)+len(entry.Message)+1)
|
||||
levelStr := entry.Level.String()
|
||||
if levelStr == "fatal" {
|
||||
levelStr = "ERROR"
|
||||
} else {
|
||||
levelStr = strings.ToUpper(levelStr)
|
||||
}
|
||||
level := fmt.Sprintf("[%s] ", levelStr)
|
||||
appName := ""
|
||||
if logToStdout {
|
||||
appName = "[notification-server] "
|
||||
}
|
||||
buf := make([]byte, 0, len(appName)+len(timestampFormat)+len(level)+len(entry.Message)+1)
|
||||
if logToStdout {
|
||||
buf = append(buf, appName...)
|
||||
}
|
||||
buf = entry.Time.AppendFormat(buf, timestampFormat)
|
||||
buf = append(buf, level...)
|
||||
buf = append(buf, entry.Message...)
|
||||
buf = append(buf, '\n')
|
||||
return buf, nil
|
||||
|
@ -20,6 +20,7 @@ import (
|
||||
"github.com/gorilla/websocket"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"gopkg.in/ini.v1"
|
||||
stdlog "log"
|
||||
)
|
||||
|
||||
var configDir string
|
||||
@ -31,10 +32,17 @@ var logFp *os.File
|
||||
|
||||
var ccnetDB *sql.DB
|
||||
|
||||
var logToStdout bool
|
||||
|
||||
func init() {
|
||||
flag.StringVar(&configDir, "c", "", "config directory")
|
||||
flag.StringVar(&logFile, "l", "", "log file path")
|
||||
|
||||
env := os.Getenv("SEAFILE_LOG_TO_STDOUT")
|
||||
if env == "true" {
|
||||
logToStdout = true
|
||||
}
|
||||
|
||||
log.SetFormatter(&LogFormatter{})
|
||||
}
|
||||
|
||||
@ -166,7 +174,9 @@ func main() {
|
||||
log.Fatalf("config directory %s doesn't exist: %v.", configDir, err)
|
||||
}
|
||||
|
||||
if logFile == "" {
|
||||
if logToStdout {
|
||||
// Use default output (StdOut)
|
||||
} else if logFile == "" {
|
||||
absLogFile = filepath.Join(configDir, "notification-server.log")
|
||||
fp, err := os.OpenFile(absLogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
@ -187,16 +197,6 @@ func main() {
|
||||
log.SetOutput(fp)
|
||||
}
|
||||
|
||||
if absLogFile != "" {
|
||||
errorLogFile := filepath.Join(filepath.Dir(absLogFile), "notification-server-error.log")
|
||||
fp, err := os.OpenFile(errorLogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to open or create error log file: %v", err)
|
||||
}
|
||||
syscall.Dup3(int(fp.Fd()), int(os.Stderr.Fd()), 0)
|
||||
fp.Close()
|
||||
}
|
||||
|
||||
if err := loadJwtPrivateKey(); err != nil {
|
||||
log.Fatalf("Failed to read config: %v", err)
|
||||
}
|
||||
@ -212,8 +212,13 @@ func main() {
|
||||
|
||||
log.Info("notification server started.")
|
||||
|
||||
addr := fmt.Sprintf("%s:%d", host, port)
|
||||
err = http.ListenAndServe(addr, router)
|
||||
server := new(http.Server)
|
||||
server.Addr = fmt.Sprintf("%s:%d", host, port)
|
||||
server.Handler = router
|
||||
|
||||
errorLog := stdlog.New(log.StandardLogger().Writer(), "", 0)
|
||||
server.ErrorLog = errorLog
|
||||
err = server.ListenAndServe()
|
||||
if err != nil {
|
||||
log.Infof("notificationserver exiting: %v", err)
|
||||
}
|
||||
@ -239,6 +244,9 @@ func handleUser1Signal() {
|
||||
}
|
||||
|
||||
func logRotate() {
|
||||
if logToStdout {
|
||||
return
|
||||
}
|
||||
fp, err := os.OpenFile(absLogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to reopen notification log: %v", err)
|
||||
@ -248,14 +256,6 @@ func logRotate() {
|
||||
logFp.Close()
|
||||
logFp = fp
|
||||
}
|
||||
|
||||
errorLogFile := filepath.Join(filepath.Dir(absLogFile), "notification-server-error.log")
|
||||
errFp, err := os.OpenFile(errorLogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to reopen notification error log: %v", err)
|
||||
}
|
||||
syscall.Dup3(int(errFp.Fd()), int(os.Stderr.Fd()), 0)
|
||||
errFp.Close()
|
||||
}
|
||||
|
||||
func newHTTPRouter() *mux.Router {
|
||||
|
Loading…
Reference in New Issue
Block a user