mirror of
https://github.com/haiwen/seafile-server.git
synced 2025-08-21 16:24:45 +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"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"gopkg.in/ini.v1"
|
"gopkg.in/ini.v1"
|
||||||
|
stdlog "log"
|
||||||
|
|
||||||
"net/http/pprof"
|
"net/http/pprof"
|
||||||
)
|
)
|
||||||
@ -374,17 +375,6 @@ func main() {
|
|||||||
log.SetLevel(level)
|
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 {
|
if err := option.LoadSeahubConfig(); err != nil {
|
||||||
log.Fatalf("Failed to read seahub config: %v", err)
|
log.Fatalf("Failed to read seahub config: %v", err)
|
||||||
}
|
}
|
||||||
@ -418,8 +408,14 @@ func main() {
|
|||||||
|
|
||||||
log.Print("Seafile file server started.")
|
log.Print("Seafile file server started.")
|
||||||
|
|
||||||
addr := fmt.Sprintf("%s:%d", option.Host, option.Port)
|
server := new(http.Server)
|
||||||
err = http.ListenAndServe(addr, router)
|
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 {
|
if err != nil {
|
||||||
log.Printf("File server exiting: %v", err)
|
log.Printf("File server exiting: %v", err)
|
||||||
}
|
}
|
||||||
@ -457,14 +453,6 @@ func logRotate() {
|
|||||||
logFp.Close()
|
logFp.Close()
|
||||||
logFp = fp
|
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
|
var rpcclient *searpc.Client
|
||||||
|
@ -1,18 +1,36 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
timestampFormat = "2006/01/02 15:04:05 "
|
timestampFormat = "[2006-01-02 15:04:05] "
|
||||||
)
|
)
|
||||||
|
|
||||||
type LogFormatter struct{}
|
type LogFormatter struct{}
|
||||||
|
|
||||||
func (f *LogFormatter) Format(entry *log.Entry) ([]byte, error) {
|
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 = entry.Time.AppendFormat(buf, timestampFormat)
|
||||||
|
buf = append(buf, level...)
|
||||||
buf = append(buf, entry.Message...)
|
buf = append(buf, entry.Message...)
|
||||||
buf = append(buf, '\n')
|
buf = append(buf, '\n')
|
||||||
return buf, nil
|
return buf, nil
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"gopkg.in/ini.v1"
|
"gopkg.in/ini.v1"
|
||||||
|
stdlog "log"
|
||||||
)
|
)
|
||||||
|
|
||||||
var configDir string
|
var configDir string
|
||||||
@ -31,10 +32,17 @@ var logFp *os.File
|
|||||||
|
|
||||||
var ccnetDB *sql.DB
|
var ccnetDB *sql.DB
|
||||||
|
|
||||||
|
var logToStdout bool
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
flag.StringVar(&configDir, "c", "", "config directory")
|
flag.StringVar(&configDir, "c", "", "config directory")
|
||||||
flag.StringVar(&logFile, "l", "", "log file path")
|
flag.StringVar(&logFile, "l", "", "log file path")
|
||||||
|
|
||||||
|
env := os.Getenv("SEAFILE_LOG_TO_STDOUT")
|
||||||
|
if env == "true" {
|
||||||
|
logToStdout = true
|
||||||
|
}
|
||||||
|
|
||||||
log.SetFormatter(&LogFormatter{})
|
log.SetFormatter(&LogFormatter{})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,7 +174,9 @@ func main() {
|
|||||||
log.Fatalf("config directory %s doesn't exist: %v.", configDir, err)
|
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")
|
absLogFile = filepath.Join(configDir, "notification-server.log")
|
||||||
fp, err := os.OpenFile(absLogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
fp, err := os.OpenFile(absLogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -187,16 +197,6 @@ func main() {
|
|||||||
log.SetOutput(fp)
|
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 {
|
if err := loadJwtPrivateKey(); err != nil {
|
||||||
log.Fatalf("Failed to read config: %v", err)
|
log.Fatalf("Failed to read config: %v", err)
|
||||||
}
|
}
|
||||||
@ -212,8 +212,13 @@ func main() {
|
|||||||
|
|
||||||
log.Info("notification server started.")
|
log.Info("notification server started.")
|
||||||
|
|
||||||
addr := fmt.Sprintf("%s:%d", host, port)
|
server := new(http.Server)
|
||||||
err = http.ListenAndServe(addr, router)
|
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 {
|
if err != nil {
|
||||||
log.Infof("notificationserver exiting: %v", err)
|
log.Infof("notificationserver exiting: %v", err)
|
||||||
}
|
}
|
||||||
@ -239,6 +244,9 @@ func handleUser1Signal() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func logRotate() {
|
func logRotate() {
|
||||||
|
if logToStdout {
|
||||||
|
return
|
||||||
|
}
|
||||||
fp, err := os.OpenFile(absLogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
fp, err := os.OpenFile(absLogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to reopen notification log: %v", err)
|
log.Fatalf("Failed to reopen notification log: %v", err)
|
||||||
@ -248,14 +256,6 @@ func logRotate() {
|
|||||||
logFp.Close()
|
logFp.Close()
|
||||||
logFp = fp
|
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 {
|
func newHTTPRouter() *mux.Router {
|
||||||
|
Loading…
Reference in New Issue
Block a user