From 2ab314ae0c5fe3ac0261f6c6abcc6523d894a30c Mon Sep 17 00:00:00 2001 From: xiemengjun Date: Tue, 11 Dec 2012 00:06:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E7=9A=84=E5=9F=BA=E6=9C=AC=E6=9E=B6=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 13.4.md | 149 +++++++++++++++++++++++++- 13.5.md | 244 +++++++++++++++++++++++++++++++++++++++++- 13.md | 2 +- README.md | 5 - images/13.4.beego.png | Bin 0 -> 46977 bytes preface.md | 2 +- 6 files changed, 393 insertions(+), 9 deletions(-) create mode 100644 images/13.4.beego.png diff --git a/13.4.md b/13.4.md index aaaab9b4..037d17ea 100644 --- a/13.4.md +++ b/13.4.md @@ -6,10 +6,157 @@ MVC设计模式是目前Web应用开发中最常见的一种架构模式,通过分离 Model(模型)、View(视图)和 Controller(控制器),可以更容易实现易于扩展的UI。Model指后台返回的数据;View指需要渲染的页面,通常是模板页面,渲染后的结果通常是HTML;Controller指Web开发人员编写的处理不同URL的控制器,如前面小节讲述的路由就是转发到控制器的过程,controller在整个的MVC框架中起到了一个核心的作用,处理业务逻辑,因此控制器是整个框架中必不可少的一部分,Model和View会更具不同的业务可以不写,例如没有数据处理的逻辑处理,没有页面输出的302调整之类的就不需要Model和View,但是controller是必不可少的。 ## beego的REST设计 +前面小节介绍了路由实现了注册struct的功能,而struct中实现了REST方式,因此我们需要设计一个用于逻辑处理controller的基类,这里主要设计了两个类型,一个struct、一个interface + + type Controller struct { + Ct *Context + Tpl *template.Template + Data map[interface{}]interface{} + ChildName string + TplNames string + Layout []string + TplExt string + } + + type ControllerInterface interface { + Init(ct *Context, cn string) //初始化上下文和子类名称 + Prepare() //开始执行之前的一些处理 + Get() //method=GET的处理 + Post() //method=POST的处理 + Delete() //method=DELETE的处理 + Put() //method=PUT的处理 + Head() //method=HEAD的处理 + Patch() //method=PATCH的处理 + Options() //method=OPTIONS的处理 + Finish() //执行完成之后的处理 Render() error //执行完method对应的方法之后渲染页面 + } + +那么前面介绍的路由add的时候是定义了ControllerInterface类型,因此,只要我们实现这个接口就可以,所以我们的基类Controller实现如下的方法: + + func (c *Controller) Init(ct *Context, cn string) { + c.Data = make(map[interface{}]interface{}) + c.Layout = make([]string, 0) + c.TplNames = "" + c.ChildName = cn + c.Ct = ct + c.TplExt = "tpl" + } + + func (c *Controller) Prepare() { + + } + + func (c *Controller) Finish() { + + } + + func (c *Controller) Get() { + http.Error(c.Ct.ResponseWriter, "Method Not Allowed", 405) + } + + func (c *Controller) Post() { + http.Error(c.Ct.ResponseWriter, "Method Not Allowed", 405) + } + + func (c *Controller) Delete() { + http.Error(c.Ct.ResponseWriter, "Method Not Allowed", 405) + } + + func (c *Controller) Put() { + http.Error(c.Ct.ResponseWriter, "Method Not Allowed", 405) + } + + func (c *Controller) Head() { + http.Error(c.Ct.ResponseWriter, "Method Not Allowed", 405) + } + + func (c *Controller) Patch() { + http.Error(c.Ct.ResponseWriter, "Method Not Allowed", 405) + } + + func (c *Controller) Options() { + http.Error(c.Ct.ResponseWriter, "Method Not Allowed", 405) + } + + func (c *Controller) Render() error { + if len(c.Layout) > 0 { + var filenames []string + for _, file := range c.Layout { + filenames = append(filenames, path.Join(ViewsPath, file)) + } + t, err := template.ParseFiles(filenames...) + if err != nil { + Trace("template ParseFiles err:", err) + } + err = t.ExecuteTemplate(c.Ct.ResponseWriter, c.TplNames, c.Data) + if err != nil { + Trace("template Execute err:", err) + } + } else { + if c.TplNames == "" { + c.TplNames = c.ChildName + "/" + c.Ct.Request.Method + "." + c.TplExt + } + t, err := template.ParseFiles(path.Join(ViewsPath, c.TplNames)) + if err != nil { + Trace("template ParseFiles err:", err) + } + err = t.Execute(c.Ct.ResponseWriter, c.Data) + if err != nil { + Trace("template Execute err:", err) + } + } + return nil + } + + func (c *Controller) Redirect(url string, code int) { + c.Ct.Redirect(code, url) + } + +上面的controller基类完成了接口定义的函数,通过路由根据url执行相应的controller的原则,会以此执行如下的函数: + + Init() 初始化 + Prepare() 执行之前的初始化,每个继承的子类可以来实现该函数 + method() 根据不同的method执行不同的函数:GET、POST、PUT、HEAD等,子类来实现这些函数,如果没实现,那么默认都是403 + Render() 可选,根据全局变量AutoRender来判断是否执行 + Finish() 执行完之后执行的操作,每个继承的子类可以来实现该函数 ## 应用指南 +上面beego框架中完成了controller基类的设计,那么我们在我们的应用中可以这样来设计我们的方法: + + package controllers + + import ( + "github.com/astaxie/beego" + ) + + type MainController struct { + beego.Controller + } + + func (this *MainController) Get() { + this.Data["Username"] = "astaxie" + this.Data["Email"] = "astaxie@gmail.com" + this.TplNames = "index.tpl" + } + +上面的方式我们实现了子类MainController,实现了Get方法,那么如果用户通过其他的方式(POST/HEAD等)来访问该资源都将返回403,而如果是Get来访问,因为我们设置了AutoRender=true,那么在执行玩Get方法之后会自动执行Render函数,就会显示如下界面: + +![](images/13.4.beego.png?raw=true) + +index.tpl的代码如下所示,我们可以看到数据的设置和显示都是相当的简单方便: + + + + + beego welcome template + + +

Hello, world!{{.Username}},{{.Email}}

+ + + ## links * [目录]() * 上一章: [自定义路由器设计](<13.3.md>) - * 下一节: [数据库操作](<13.5.md>) \ No newline at end of file + * 下一节: [日志和配置设计](<13.5.md>) \ No newline at end of file diff --git a/13.5.md b/13.5.md index ffb11496..8349a538 100644 --- a/13.5.md +++ b/13.5.md @@ -1,4 +1,246 @@ -# 13.5 数据库操作 +# 13.5 日志和配置设计 + +## 日志和配置的重要性 +前面已经介绍过日志在我们程序开发中起着很重要的作用,通过日志我们可以记录调试我们的信息,当初介绍过一个日志系统seelog,根据不同的level输出不同的日志,这个对于程序开发和程序部署来说至关重要。我们可以在程序开发中设置level低一点,部署的时候把level设置高,这样我们开发中的调试信息可以屏蔽掉。 + +配置模块对于应用部署牵涉到服务器不同的一些配置信息非常有用,例如一些数据库配置信息、监听端口、监听地址等都是可以通过配置文件来配置,这样我们的应用程序就具有很强的灵活性,可以通过配置文件的配置部署在不同的机器上,可以连接不同的数据库之类的。 + +## beego的日志设计 +beego的日志设计部署思路来自于seelog,根据不同的level来记录日志,但是beego设计的日志系统比较轻量级,采用了系统的log.Logger接口,默认输出到os.Stdout,用户可以实现这个接口然后通过beego.SetLogger设置自定义的输出,详细的实现如下所示: + + + // Log levels to control the logging output. + const ( + LevelTrace = iota + LevelDebug + LevelInfo + LevelWarning + LevelError + LevelCritical + ) + + // logLevel controls the global log level used by the logger. + var level = LevelTrace + + // LogLevel returns the global log level and can be used in + // own implementations of the logger interface. + func Level() int { + return level + } + + // SetLogLevel sets the global log level used by the simple + // logger. + func SetLevel(l int) { + level = l + } + +上面这一段实现了日志系统的日志分级,默认的级别是Trace,用户通过SetLevel可以设置不同的分级。 + + // logger references the used application logger. + var BeeLogger = log.New(os.Stdout, "", log.Ldate|log.Ltime) + + // SetLogger sets a new logger. + func SetLogger(l *log.Logger) { + BeeLogger = l + } + + // Trace logs a message at trace level. + func Trace(v ...interface{}) { + if level <= LevelTrace { + BeeLogger.Printf("[T] %v\n", v) + } + } + + // Debug logs a message at debug level. + func Debug(v ...interface{}) { + if level <= LevelDebug { + BeeLogger.Printf("[D] %v\n", v) + } + } + + // Info logs a message at info level. + func Info(v ...interface{}) { + if level <= LevelInfo { + BeeLogger.Printf("[I] %v\n", v) + } + } + + // Warning logs a message at warning level. + func Warn(v ...interface{}) { + if level <= LevelWarning { + BeeLogger.Printf("[W] %v\n", v) + } + } + + // Error logs a message at error level. + func Error(v ...interface{}) { + if level <= LevelError { + BeeLogger.Printf("[E] %v\n", v) + } + } + + // Critical logs a message at critical level. + func Critical(v ...interface{}) { + if level <= LevelCritical { + BeeLogger.Printf("[C] %v\n", v) + } + } + +上面这一段代码默认初始化了一个BeeLogger对象,默认输出到os.Stdout,用户可以通过beego.SetLogger来设置实现了logger的接口输出。这里面实现了六个函数: + +- Trace(一般的记录信息,举例如下:) + - "Entered parse function validation block" + - "Validation: entered second 'if'" + - "Dictionary 'Dict' is empty. Using default value" +- Debug(调试信息,举例如下:) + - "Web page requested: http://somesite.com Params='...'" + - "Response generated. Response size: 10000. Sending." + - "New file received. Type:PNG Size:20000" +- Info(打印信息,举例如下:) + - "Web server restarted" + - "Hourly statistics: Requested pages: 12345 Errors: 123 ..." + - "Service paused. Waiting for 'resume' call" +- Warn(警告信息,举例如下:) + - "Cache corrupted for file='test.file'. Reading from back-end" + - "Database 192.168.0.7/DB not responding. Using backup 192.168.0.8/DB" + - "No response from statistics server. Statistics not sent" +- Error(错误信息,举例如下:) + - "Internal error. Cannot process request #12345 Error:...." + - "Cannot perform login: credentials DB not responding" +- Critical(致命错误,举例如下:) + - "Critical panic received: .... Shutting down" + - "Fatal error: ... App is shutting down to prevent data corruption or loss" + +可以看到每个函数里面都有对level的判断,所以如果我们在部署的时候设置了level=LevelWarning,那么Trace、Debug、Info这三个函数都不会有任何的输出,以此类推。 + +## beego的配置设计 +配置信息的解析,beego实现了一个key=value的配置文件读取,类似ini配置文件的格式,就是一个文件解析的过程,然后把解析的数据保存到map中,最后在调用的时候通过几个string、int之类的函数调用返回相应的值,具体的实现请看下面: + +首先定义了一些ini配置文件的一些全局性常量 : + + var ( + bComment = []byte{'#'} + bEmpty = []byte{} + bEqual = []byte{'='} + bDQuote = []byte{'"'} + ) + +定义了配置文件的格式: + + // A Config represents the configuration. + type Config struct { + filename string + comment map[int][]string // id: []{comment, key...}; id 1 is for main comment. + data map[string]string // key: value + offset map[string]int64 // key: offset; for editing. + sync.RWMutex + } + +定义了解析文件的函数,解析文件的过程是打开文件,然后一行一行的读取,解析注释、空行和key=value数据: + + // ParseFile creates a new Config and parses the file configuration from the + // named file. + func LoadConfig(name string) (*Config, error) { + file, err := os.Open(name) + if err != nil { + return nil, err + } + + cfg := &Config{ + file.Name(), + make(map[int][]string), + make(map[string]string), + make(map[string]int64), + sync.RWMutex{}, + } + cfg.Lock() + defer cfg.Unlock() + defer file.Close() + + var comment bytes.Buffer + buf := bufio.NewReader(file) + + for nComment, off := 0, int64(1); ; { + line, _, err := buf.ReadLine() + if err == io.EOF { + break + } + if bytes.Equal(line, bEmpty) { + continue + } + + off += int64(len(line)) + + if bytes.HasPrefix(line, bComment) { + line = bytes.TrimLeft(line, "#") + line = bytes.TrimLeftFunc(line, unicode.IsSpace) + comment.Write(line) + comment.WriteByte('\n') + continue + } + if comment.Len() != 0 { + cfg.comment[nComment] = []string{comment.String()} + comment.Reset() + nComment++ + } + + val := bytes.SplitN(line, bEqual, 2) + if bytes.HasPrefix(val[1], bDQuote) { + val[1] = bytes.Trim(val[1], `"`) + } + + key := strings.TrimSpace(string(val[0])) + cfg.comment[nComment-1] = append(cfg.comment[nComment-1], key) + cfg.data[key] = strings.TrimSpace(string(val[1])) + cfg.offset[key] = off + } + return cfg, nil + } + +下面实现了一些读取配置文件的函数,返回的值确定为bool、int、float64或string: + + // Bool returns the boolean value for a given key. + func (c *Config) Bool(key string) (bool, error) { + return strconv.ParseBool(c.data[key]) + } + + // Int returns the integer value for a given key. + func (c *Config) Int(key string) (int, error) { + return strconv.Atoi(c.data[key]) + } + + // Float returns the float value for a given key. + func (c *Config) Float(key string) (float64, error) { + return strconv.ParseFloat(c.data[key], 64) + } + + // String returns the string value for a given key. + func (c *Config) String(key string) string { + return c.data[key] + } + +## 应用指南 +下面这个函数是我一个应用中的例子,用来获取远程url地址的json数据,实现如下: + + func GetJson() { + resp, err := http.Get(beego.AppConfig.String("url")) + if err != nil { + beego.Critical("http get info error") + return + } + defer resp.Body.Close() + body, err := ioutil.ReadAll(resp.Body) + err = json.Unmarshal(body, &AllInfo) + if err != nil { + beego.Critical("error:", err) + } + } + +函数中调用了框架的日志函数`beego.Critical`函数用来报错,调用了`beego.AppConfig.String("url")`用来获取配置文件中的信息,配置文件的信息如下(app.conf): + + appname = hs + url ="http://www.api.com/api.html" + ## links * [目录]() diff --git a/13.md b/13.md index 031c9d40..1184efa3 100644 --- a/13.md +++ b/13.md @@ -8,7 +8,7 @@ * 2 [数据库设计](13.2.md) * 3 [自定义路由器设计](13.3.md) * 4 [controller设计](13.4.md) - * 5 [数据库操作](13.5.md) + * 5 [日志和配置设计](13.5.md) * 6 [实现博客的增删改](13.6.md) * 7 [小结](13.7.md)  diff --git a/README.md b/README.md index e9266167..0e540c8c 100644 --- a/README.md +++ b/README.md @@ -43,11 +43,6 @@ - [BianJiang](https://github.com/border) (编写go开发工具Vim和Emacs的设置) - [Oling Cat](https://github.com/OlingCat)(review代码) - [Wenlei Wu](mailto:spadesacn@gmail.com)(提供一些图片展示) - -##友情链接 -目前Go开发的比较成熟的一个框架是由我们国人开发的,目前版本已经比较成熟,而且提供了很多的应用demo,方便快速开发Web应用,该框架是由海意和BianJiang开发维护,推荐大家看看: - -[golangers框架](https://github.com/golangers/framework) ## 授权许可 除特别声明外,本书中的内容使用[CC BY-SA 3.0 License](http://creativecommons.org/licenses/by-sa/3.0/)(创作共用 署名-相同方式共享3.0许可协议)授权,代码遵循[BSD 3-Clause License]()(3项条款的BSD许可协议)。 diff --git a/images/13.4.beego.png b/images/13.4.beego.png new file mode 100644 index 0000000000000000000000000000000000000000..96a9d27432677c13a5e051cc5a5ba2d4f36f6074 GIT binary patch literal 46977 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 qz+Vsf|5wr9EcV;v_+R}LJ^8M`W%L