diff --git a/conf/frpc.ini b/conf/frpc.ini index 28f4e6d..9a1d8bc 100644 --- a/conf/frpc.ini +++ b/conf/frpc.ini @@ -6,6 +6,7 @@ server_port = 7000 log_file = ./frpc.log # debug, info, warn, error log_level = info +log_max_days = 3 # for authentication auth_token = 123 diff --git a/conf/frps.ini b/conf/frps.ini index 79bbbdf..91b0629 100644 --- a/conf/frps.ini +++ b/conf/frps.ini @@ -8,6 +8,7 @@ vhost_http_port = 80 log_file = ./frps.log # debug, info, warn, error log_level = info +log_max_days = 3 # ssh is the proxy name, client will use this name and auth_token to connect to server [ssh] diff --git a/src/frp/cmd/frpc/main.go b/src/frp/cmd/frpc/main.go index 2f8a7f1..9fbab56 100644 --- a/src/frp/cmd/frpc/main.go +++ b/src/frp/cmd/frpc/main.go @@ -88,7 +88,7 @@ func main() { client.ServerPort = serverPort } - log.InitLog(client.LogWay, client.LogFile, client.LogLevel) + log.InitLog(client.LogWay, client.LogFile, client.LogLevel, client.LogMaxDays) // wait until all control goroutine exit var wait sync.WaitGroup diff --git a/src/frp/cmd/frps/main.go b/src/frp/cmd/frps/main.go index bd68f0c..a23f3fb 100644 --- a/src/frp/cmd/frps/main.go +++ b/src/frp/cmd/frps/main.go @@ -90,7 +90,7 @@ func main() { server.BindPort = bindPort } - log.InitLog(server.LogWay, server.LogFile, server.LogLevel) + log.InitLog(server.LogWay, server.LogFile, server.LogLevel, server.LogMaxDays) l, err := conn.Listen(server.BindAddr, server.BindPort) if err != nil { @@ -98,6 +98,7 @@ func main() { os.Exit(1) } + // create vhost if VhostHttpPort != 0 if server.VhostHttpPort != 0 { vhostListener, err := conn.Listen(server.BindAddr, server.VhostHttpPort) if err != nil { diff --git a/src/frp/models/client/config.go b/src/frp/models/client/config.go index 466ff40..1d19c33 100644 --- a/src/frp/models/client/config.go +++ b/src/frp/models/client/config.go @@ -28,6 +28,7 @@ var ( LogFile string = "console" LogWay string = "console" LogLevel string = "info" + LogMaxDays int64 = 3 HeartBeatInterval int64 = 20 HeartBeatTimeout int64 = 90 ) @@ -69,6 +70,11 @@ func LoadConf(confFile string) (err error) { LogLevel = tmpStr } + tmpStr, ok = conf.Get("common", "log_max_days") + if ok { + LogMaxDays, _ = strconv.ParseInt(tmpStr, 10, 64) + } + var authToken string tmpStr, ok = conf.Get("common", "auth_token") if ok { diff --git a/src/frp/models/server/config.go b/src/frp/models/server/config.go index 8f04c21..28e096c 100644 --- a/src/frp/models/server/config.go +++ b/src/frp/models/server/config.go @@ -32,6 +32,7 @@ var ( LogFile string = "console" LogWay string = "console" // console or file LogLevel string = "info" + LogMaxDays int64 = 3 HeartBeatTimeout int64 = 90 UserConnTimeout int64 = 10 @@ -82,6 +83,11 @@ func LoadConf(confFile string) (err error) { LogLevel = tmpStr } + tmpStr, ok = conf.Get("common", "log_max_days") + if ok { + LogMaxDays, _ = strconv.ParseInt(tmpStr, 10, 64) + } + // servers for name, section := range conf { if name != "common" { diff --git a/src/frp/models/server/server.go b/src/frp/models/server/server.go index a6338df..adcbaec 100644 --- a/src/frp/models/server/server.go +++ b/src/frp/models/server/server.go @@ -113,8 +113,8 @@ func (p *ProxyServer) Start() (err error) { // set timeout time.AfterFunc(time.Duration(UserConnTimeout)*time.Second, func() { p.Lock() - defer p.Unlock() element := p.userConnList.Front() + p.Unlock() if element == nil { return } diff --git a/src/frp/utils/log/log.go b/src/frp/utils/log/log.go index ed66ca0..3e751a7 100644 --- a/src/frp/utils/log/log.go +++ b/src/frp/utils/log/log.go @@ -15,6 +15,7 @@ package log import ( + "fmt" "github.com/astaxie/beego/logs" ) @@ -26,24 +27,24 @@ func init() { Log.SetLogFuncCallDepth(Log.GetLogFuncCallDepth() + 1) } -func InitLog(logWay string, logFile string, logLevel string) { - SetLogFile(logWay, logFile) +func InitLog(logWay string, logFile string, logLevel string, maxdays int64) { + SetLogFile(logWay, logFile, maxdays) SetLogLevel(logLevel) } -// logWay: such as file or console -func SetLogFile(logWay string, logFile string) { +// logWay: file or console +func SetLogFile(logWay string, logFile string, maxdays int64) { if logWay == "console" { Log.SetLogger("console", "") } else { - Log.SetLogger("file", `{"filename": "`+logFile+`"}`) + params := fmt.Sprintf(`{"filename": "%s", "maxdays": %d}`, logFile, maxdays) + Log.SetLogger("file", params) } } // value: error, warning, info, debug func SetLogLevel(logLevel string) { level := 4 // warning - switch logLevel { case "error": level = 3 @@ -56,7 +57,6 @@ func SetLogLevel(logLevel string) { default: level = 4 } - Log.SetLevel(level) }