国庆迭代第三波 · pythonAI/dotweb@cbd8807 · GitHub
Skip to content

Commit cbd8807

Browse files
author
pzrr@qq.com
committed
国庆迭代第三波
#### Version 1.3 * 增加TLS支持 * 1)ServerConfig增加EnabledTLS\TLSCertFile\TLSKeyFile三个配置项 * 2)HttpServer增加SetEnabledTLS方法 * 3)增加example/tls目录 * 移除:移除DotWeb.StartWithConfig方法,使用配置方式时需显式调用dotweb.SetConfig方法 * 进一步完善默认日志输出 * 2017-10-07 22:00
1 parent 7b03d7b commit cbd8807

10 files changed

Lines changed: 167 additions & 80 deletions

File tree

config/configs.go

Lines changed: 3 additions & 0 deletions

dotweb.go

Lines changed: 42 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func New() *DotWeb {
7070

7171
logDotLogo()
7272

73-
logger.Logger().Debug("Dotweb Start New AppServer", LogTarget_HttpServer)
73+
logger.Logger().Debug("DotWeb Start New AppServer", LogTarget_HttpServer)
7474
return app
7575
}
7676

@@ -158,7 +158,7 @@ func (app *DotWeb) SetNotFoundHandle(handler NotFoundHandle) {
158158
func (app *DotWeb) SetPProfConfig(enabledPProf bool, httpport int) {
159159
app.Config.App.EnabledPProf = enabledPProf
160160
app.Config.App.PProfPort = httpport
161-
logger.Logger().Debug("Dotweb SetPProfConfig ["+strconv.FormatBool(enabledPProf)+", "+strconv.Itoa(httpport)+"]", LogTarget_HttpServer)
161+
logger.Logger().Debug("DotWeb SetPProfConfig ["+strconv.FormatBool(enabledPProf)+", "+strconv.Itoa(httpport)+"]", LogTarget_HttpServer)
162162
}
163163

164164
// SetLogger set user logger, the logger must implement logger.AppLog interface
@@ -271,24 +271,8 @@ func (app *DotWeb) SetConfig(config *config.Config) error {
271271
// StartServer start server with http port
272272
// if config the pprof, will be start pprof server
273273
func (app *DotWeb) StartServer(httpport int) error {
274-
//start pprof server
275-
if app.Config.App.EnabledPProf {
276-
if app.Config.App.PProfPort == httpport {
277-
errStr := "PProf Server and HttpServer have the same port"
278-
logger.Logger().Warn("Dotweb:StartPProfServer["+strconv.Itoa(app.Config.App.PProfPort)+"] failed: "+errStr, LogTarget_HttpServer)
279-
} else {
280-
logger.Logger().Debug("Dotweb:StartPProfServer["+strconv.Itoa(app.Config.App.PProfPort)+"] Begin", LogTarget_HttpServer)
281-
go func() {
282-
err := http.ListenAndServe(":"+strconv.Itoa(app.Config.App.PProfPort), nil)
283-
if err != nil {
284-
logger.Logger().Warn("Dotweb:StartPProfServer["+strconv.Itoa(app.Config.App.PProfPort)+"] error: "+err.Error(), LogTarget_HttpServer)
285-
}
286-
}()
287-
}
288-
}
289274
addr := ":" + strconv.Itoa(httpport)
290275
return app.ListenAndServe(addr)
291-
292276
}
293277

294278
// Start start app server with set config
@@ -319,8 +303,31 @@ func (app *DotWeb) MustStart() {
319303
// ListenAndServe start server with addr
320304
// not support pprof server auto start
321305
func (app *DotWeb) ListenAndServe(addr string) error {
322-
initInnerRouter(app.HttpServer)
306+
app.initServerEnvironment()
307+
app.initInnerRouter()
308+
309+
if app.HttpServer.ServerConfig.EnabledTLS {
310+
err := app.HttpServer.ListenAndServeTLS(addr, app.HttpServer.ServerConfig.TLSCertFile, app.HttpServer.ServerConfig.TLSKeyFile)
311+
return err
312+
} else {
313+
err := app.HttpServer.ListenAndServe(addr)
314+
return err
315+
}
316+
317+
}
318+
319+
// init inner routers
320+
func (ds *DotWeb) initInnerRouter() {
321+
//默认支持pprof信息查看
322+
gInner := ds.HttpServer.Group("/dotweb")
323+
gInner.GET("/debug/pprof/:key", initPProf)
324+
gInner.GET("/debug/freemem", freeMemory)
325+
gInner.GET("/state", showServerState)
326+
gInner.GET("/state/interval", showIntervalData)
327+
gInner.GET("/query/:key", showQuery)
328+
}
323329

330+
func (app *DotWeb) initServerEnvironment() {
324331
if app.ExceptionHandler == nil {
325332
app.SetExceptionHandle(app.DefaultHTTPErrorHandler)
326333
}
@@ -348,24 +355,18 @@ func (app *DotWeb) ListenAndServe(addr string) error {
348355
//add default httphandler with middlewares
349356
app.Use(&xMiddleware{})
350357

351-
logger.Logger().Log("Dotweb:ListenAndServe["+addr+"] begin", LogTarget_HttpServer, LogLevel_Debug)
352-
err := app.HttpServer.ListenAndServe(addr)
353-
return err
354-
}
355-
356-
// StartServerWithConfig start server with config
357-
func (app *DotWeb) StartServerWithConfig(config *config.Config) error {
358-
err := app.SetConfig(config)
359-
if err != nil {
360-
return err
361-
}
362-
//start server
363-
port := config.Server.Port
364-
if port <= 0 {
365-
port = DefaultHttpPort
358+
//start pprof server
359+
if app.Config.App.EnabledPProf {
360+
logger.Logger().Debug("DotWeb:StartPProfServer["+strconv.Itoa(app.Config.App.PProfPort)+"] Begin", LogTarget_HttpServer)
361+
go func() {
362+
err := http.ListenAndServe(":"+strconv.Itoa(app.Config.App.PProfPort), nil)
363+
if err != nil {
364+
logger.Logger().Error("DotWeb:StartPProfServer["+strconv.Itoa(app.Config.App.PProfPort)+"] error: "+err.Error(), LogTarget_HttpServer)
365+
//panic the error
366+
panic(err)
367+
}
368+
}()
366369
}
367-
return app.StartServer(port)
368-
369370
}
370371

371372
// DefaultHTTPErrorHandler default exception handler
@@ -398,17 +399,6 @@ func HTTPNotFound(ctx Context) {
398399
http.NotFound(ctx.Response().Writer(), ctx.Request().Request)
399400
}
400401

401-
// init inner routers
402-
func initInnerRouter(server *HttpServer) {
403-
//默认支持pprof信息查看
404-
gInner := server.Group("/dotweb")
405-
gInner.GET("/debug/pprof/:key", initPProf)
406-
gInner.GET("/debug/freemem", freeMemory)
407-
gInner.GET("/state", showServerState)
408-
gInner.GET("/state/interval", showIntervalData)
409-
gInner.GET("/query/:key", showQuery)
410-
}
411-
412402
//query pprof debug info
413403
//key:heap goroutine threadcreate block
414404
func initPProf(ctx Context) error {
@@ -460,9 +450,9 @@ func showQuery(ctx Context) error {
460450
}
461451

462452
func logDotLogo() {
463-
logger.Logger().DebugRaw(` ____ __ __`, LogTarget_HttpServer)
464-
logger.Logger().DebugRaw(` / __ \ ____ / /_ _ __ ___ / /_`, LogTarget_HttpServer)
465-
logger.Logger().DebugRaw(` / / / / / __ \ / __/| | /| / / / _ \ / __ \`, LogTarget_HttpServer)
466-
logger.Logger().DebugRaw(` / /_/ / / /_/ // /_ | |/ |/ / / __/ / /_/ /`, LogTarget_HttpServer)
467-
logger.Logger().DebugRaw(`/_____/ \____/ \__/ |__/|__/ \___/ /_.___/`, LogTarget_HttpServer)
453+
logger.Logger().Print(` ____ __ __`, LogTarget_HttpServer)
454+
logger.Logger().Print(` / __ \ ____ / /_ _ __ ___ / /_`, LogTarget_HttpServer)
455+
logger.Logger().Print(` / / / / / __ \ / __/| | /| / / / _ \ / __ \`, LogTarget_HttpServer)
456+
logger.Logger().Print(` / /_/ / / /_/ // /_ | |/ |/ / / __/ / /_/ /`, LogTarget_HttpServer)
457+
logger.Logger().Print(`/_____/ \____/ \__/ |__/|__/ \___/ /_.___/`, LogTarget_HttpServer)
468458
}

example/config/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func main() {
3434
}
3535

3636
fmt.Println("dotweb.StartServer => " + fmt.Sprint(appConfig))
37-
err = app.StartServer(appConfig.Server.Port)
37+
err = app.Start()
3838
fmt.Println("dotweb.StartServer error => ", err)
3939
}
4040

example/tls/main.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"github.com/devfeel/dotweb"
6+
"github.com/devfeel/dotweb/framework/exception"
7+
"strconv"
8+
)
9+
10+
func main() {
11+
12+
defer func() {
13+
var errmsg string
14+
if err := recover(); err != nil {
15+
errmsg = exception.CatchError("main", dotweb.LogTarget_HttpServer, err)
16+
fmt.Println("main error : ", errmsg)
17+
}
18+
}()
19+
20+
//初始化DotServer
21+
app := dotweb.New()
22+
23+
//设置dotserver日志目录
24+
//如果不设置,默认不启用,且默认为当前目录
25+
app.SetEnabledLog(true)
26+
27+
//开启development模式
28+
app.SetDevelopmentMode()
29+
30+
//设置路由
31+
InitRoute(app.HttpServer)
32+
33+
//启动 监控服务
34+
app.SetPProfConfig(true, 8081)
35+
36+
//设置TLS
37+
app.HttpServer.SetEnabledTLS(true, "", "")
38+
39+
// 开始服务
40+
port := 8080
41+
fmt.Println("dotweb.StartServer => " + strconv.Itoa(port))
42+
err := app.StartServer(port)
43+
fmt.Println("dotweb.StartServer error => ", err)
44+
}
45+
46+
func Index(ctx dotweb.Context) error {
47+
ctx.Response().Header().Set("Content-Type", "text/html; charset=utf-8")
48+
ctx.WriteString(ctx.Request().URL.Path)
49+
//_, err := ctx.WriteStringC(201, "index => ", ctx.RemoteIP(), "我是首页")
50+
return nil
51+
}
52+
53+
func InitRoute(server *dotweb.HttpServer) {
54+
server.GET("/", Index)
55+
}

group.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ type (
2424

2525
func NewGroup(prefix string, server *HttpServer) Group {
2626
g := &xGroup{prefix: prefix, server: server}
27-
logger.Logger().Debug("Dotweb:Group NewGroup ["+prefix+"]", LogTarget_HttpServer)
27+
logger.Logger().Debug("DotWeb:Group NewGroup ["+prefix+"]", LogTarget_HttpServer)
2828
return g
2929
}
3030

logger/logger.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,10 @@ type AppLog interface {
2020
SetEnabledConsole(enabled bool)
2121
SetEnabledLog(enabledLog bool)
2222
Debug(log string, logTarget string)
23-
DebugRaw(log string, logTarget string)
23+
Print(log string, logTarget string)
2424
Info(log string, logTarget string)
2525
Warn(log string, logTarget string)
2626
Error(log string, logTarget string)
27-
Log(log string, logTarget string, logLevel string)
2827
}
2928

3029
var (

logger/xlog.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,29 +40,26 @@ const (
4040
)
4141

4242
func (l *xLog) Debug(log string, logTarget string) {
43-
l.Log(log, logTarget, LogLevel_Debug)
43+
l.log(log, logTarget, LogLevel_Debug, false)
4444
}
4545

46-
func (l *xLog) DebugRaw(log string, logTarget string) {
46+
func (l *xLog) Print(log string, logTarget string) {
4747
l.log(log, logTarget, LogLevel_Debug, true)
4848
}
4949

5050
func (l *xLog) Info(log string, logTarget string) {
51-
l.Log(log, logTarget, LogLevel_Info)
51+
l.log(log, logTarget, LogLevel_Info, false)
5252
}
5353

5454
func (l *xLog) Warn(log string, logTarget string) {
55-
l.Log(log, logTarget, LogLevel_Warn)
55+
l.log(log, logTarget, LogLevel_Warn, false)
5656
}
5757

5858
func (l *xLog) Error(log string, logTarget string) {
59-
l.Log(log, logTarget, LogLevel_Error)
60-
}
61-
62-
func (l *xLog) Log(log string, logTarget string, logLevel string) {
63-
l.log(log, logTarget, logLevel, false)
59+
l.log(log, logTarget, LogLevel_Error, false)
6460
}
6561

62+
// log push log into chan
6663
func (l *xLog) log(log string, logTarget string, logLevel string, isRaw bool) {
6764
if l.enabledLog {
6865
skip := 3

middleware.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func (m *RequestLogMiddleware) Handle(ctx Context) error {
6464
m.Next(ctx)
6565
timetaken := int64(time.Now().Sub(ctx.(*HttpContext).startTime) / time.Millisecond)
6666
log := ctx.Request().Url() + " " + logContext(ctx, timetaken)
67-
logger.Logger().Log(log, LogTarget_HttpRequest, LogLevel_Debug)
67+
logger.Logger().Debug(log, LogTarget_HttpRequest)
6868
return nil
6969
}
7070

router.go

Lines changed: 6 additions & 6 deletions

0 commit comments

Comments
 (0)