## 日志處理
orange 框架中有一個專門處理日志的包,通過使用日志包進行日志處理;
在配置文件中可以進行日志相關配置;
- 功能上滿足絕大多數日志需求,類似zap風格輸出;
- 代碼邏輯更加精簡,性能高;
下圖是在同一臺機器上進行的壓測對比,可以見得 orange 框架內置日志性能要優于zap;

## 日志配置
配置文件中默認日志配置如下:
- 日志級別包含 DEBUG,INFO,NOTICE, WARNING,ERROR, CRITICAL,日志級別依次遞增,當配置指定級別后,則只會輸出大于等于當前級別的日志信息;
- 日志類型 有兩種 text 和 json 分別對應 json 日志類型和 文本日志類型;
- 日志路徑,這里注意填寫一個目錄地址,默認日志會在當前配置的目錄中生成;
- 日志存儲支持定時同步,防止日志寫入過快導致的系統開銷,syncInterval的單位是**毫秒** syncInterval = 0 則實時同;步日志到日志文件 ,syncInterval = 500 則會將日志暫存到 buffer 中,每間隔 500ms 的時間將日志數據同步到日志文件。
```
[app.logger]
level = "INFO" // 日志級別
type = "text" // 類型
path = "" // 日志存儲目錄,留空則日志會輸出到控制臺
syncInterval = 500 // 日志同步時間間隔 (單位:毫秒)
```
## 快速使用
> 日志記錄方法參數和 fmt.Sprintf() 一樣,第一個參數是格式化內容,可以包含 %s,%d,%v 等通配符,后面的參數則是具體需要替換的數據;
> 日志默認會存儲在配置的目錄下,日志文件名是 default.log
一般在程序中我們使用如下的方式記錄日志:
格式化模式:
~~~
logger.Info("this is a Infolog %v", info)
logger.Error("this is a Errorlog %v", err)
logger.Warning("this is a Warning log %v", warn)
~~~
類似zap字段模式
~~~
logger.Infow("this is a Infolog", "info", "info value")
logger.Errorw("this is a Errorlog", "err", "err value")
logger.Warningw("this is a Warning log", "warn", "warn value")
~~~
## 獨立日志
> 有時如果希望對指定業務進行單獨的日志文件存儲,可以使用 LogFile() 方法進行鏈式操作處理;
~~~
// 此方法會將日志文件記錄在配置目錄下的 api.log 文件中
logger.LogFile("api").Error("error logs %d", err)
~~~
## 日志效果
