From 4e5982948c3012766a37533c9028fde3cba9bd71 Mon Sep 17 00:00:00 2001 From: vCaesar Date: Sun, 18 Dec 2016 17:00:11 +0800 Subject: [PATCH] Add 13.4.md syntax highlighting --- zh/13.4.md | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/zh/13.4.md b/zh/13.4.md index 07b3d92c..bce40ce8 100644 --- a/zh/13.4.md +++ b/zh/13.4.md @@ -8,6 +8,7 @@ ## beego的日志设计 beego的日志设计部署思路来自于seelog,根据不同的level来记录日志,但是beego设计的日志系统比较轻量级,采用了系统的log.Logger接口,默认输出到os.Stdout,用户可以实现这个接口然后通过beego.SetLogger设置自定义的输出,详细的实现如下所示: +```Go // Log levels to control the logging output. const ( @@ -33,9 +34,10 @@ beego的日志设计部署思路来自于seelog,根据不同的level来记录 func SetLevel(l int) { level = l } - +``` 上面这一段实现了日志系统的日志分级,默认的级别是Trace,用户通过SetLevel可以设置不同的分级。 - +```Go + // logger references the used application logger. var BeeLogger = log.New(os.Stdout, "", log.Ldate|log.Ltime) @@ -85,7 +87,7 @@ beego的日志设计部署思路来自于seelog,根据不同的level来记录 BeeLogger.Printf("[C] %v\n", v) } } - +``` 上面这一段代码默认初始化了一个BeeLogger对象,默认输出到os.Stdout,用户可以通过beego.SetLogger来设置实现了logger的接口输出。这里面实现了六个函数: - Trace(一般的记录信息,举例如下:) @@ -117,6 +119,7 @@ beego的日志设计部署思路来自于seelog,根据不同的level来记录 配置信息的解析,beego实现了一个key=value的配置文件读取,类似ini配置文件的格式,就是一个文件解析的过程,然后把解析的数据保存到map中,最后在调用的时候通过几个string、int之类的函数调用返回相应的值,具体的实现请看下面: 首先定义了一些ini配置文件的一些全局性常量 : +```Go var ( bComment = []byte{'#'} @@ -124,9 +127,10 @@ beego的日志设计部署思路来自于seelog,根据不同的level来记录 bEqual = []byte{'='} bDQuote = []byte{'"'} ) - +``` 定义了配置文件的格式: - +```Go + // A Config represents the configuration. type Config struct { filename string @@ -135,9 +139,10 @@ beego的日志设计部署思路来自于seelog,根据不同的level来记录 offset map[string]int64 // key: offset; for editing. sync.RWMutex } - +``` 定义了解析文件的函数,解析文件的过程是打开文件,然后一行一行的读取,解析注释、空行和key=value数据: - +```Go + // ParseFile creates a new Config and parses the file configuration from the // named file. func LoadConfig(name string) (*Config, error) { @@ -196,9 +201,10 @@ beego的日志设计部署思路来自于seelog,根据不同的level来记录 } return cfg, nil } - +``` 下面实现了一些读取配置文件的函数,返回的值确定为bool、int、float64或string: - +```Go + // Bool returns the boolean value for a given key. func (c *Config) Bool(key string) (bool, error) { return strconv.ParseBool(c.data[key]) @@ -218,9 +224,10 @@ beego的日志设计部署思路来自于seelog,根据不同的level来记录 func (c *Config) String(key string) string { return c.data[key] } - +``` ## 应用指南 下面这个函数是我一个应用中的例子,用来获取远程url地址的json数据,实现如下: +```Go func GetJson() { resp, err := http.Get(beego.AppConfig.String("url")) @@ -235,13 +242,14 @@ beego的日志设计部署思路来自于seelog,根据不同的level来记录 beego.Critical("error:", err) } } - +``` 函数中调用了框架的日志函数`beego.Critical`函数用来报错,调用了`beego.AppConfig.String("url")`用来获取配置文件中的信息,配置文件的信息如下(app.conf): +```Go appname = hs url ="http://www.api.com/api.html" - +``` ## links * [目录]() * 上一章: [controller设计](<13.3.md>)