blue的配置功能实现在:
https://github.com/lanyutc/blue/tree/master/conf
blue的日志功能实现在:
https://github.com/lanyutc/blue/tree/master/util/log
配置功能
目的是暴露出重要的运行参数,通过配置文件的形式进行设置,比如应用名字,服务名字,提供服务的IP:Port等等。
配置文件使用最简单的key=value格式,同时约定以‘#’开始的行为注释行;配置项分为必需配置项与可选配置项,必需配置项若留空则程序启动时会出错,可选配置项若留空则使用默认值。
谈一下blue的配置项选择
总体思想:对配置的总量进行控制,仅仅暴露相对必要的配置。
APP、Server命名、IP:Port、路径之类的配置放入配置文件中毋庸置疑的,还有一些诸如工作goroutine数量以及工作队列长度,需要特殊场景特殊对待,所以也列入了配置项。但是与TCP相关配置:AcceptTCP的Deadline、Read的Deadline未列入配置项,而是选择了设置默认值隐藏, 并不是表示它们就不重要 。
是否暴露配置这个问题我是这么考虑的: 将一些不经常变动的配置默认化隐藏起来 。这么做的初衷一是为了控制配置总量,不让打开配置文件的人有一种懵的感觉;二是为了贯彻blue的思想:拒绝大而全;最后一个原因,真正需要修改这些默认隐藏配置的人毕竟是少数,或者换句话说,用到这些默认隐藏配置的人应该是高级、资深人士,通过自己的能力修改代码暴露一行配置应该绰绰有余。
一个可选方案是:把隐藏的配置做成可选配置,设置一个默认值,让关心的人去调整。这样违背了减少配置项的初衷,所以最开始就把这个想法搁置了。
配置文件总览
可以看到目前配置文件分成了三个区域:
- 基础配置
- CS通信配置
- 日志配置
之所以分区域的目的也是为了配置文件更清晰。如果你的服务只是提供内部服务,那么对于CS通信配置(区域2)是可以完全注释掉的。
使用
import “github.com/lanyutc/blue/conf” cfg := conf.GetConfig()
日志功能
记录服务器运行状态与关键信息,用固定格式的文本通过文件保存下来。
日志路径
- 配置的日志起始目录(配置项:LogPath,注意权限)+ App名字 + Server名字
日志格式
- 时间(精度秒)|位置|日志等级|内容
日志分级
- DEBUG
- INFO
- WARN
- ERROR
日志类型
- 滚动日志,可自定义日志文件名
- 按天分割日志,可自定义日志文件名
- 按时分割日志,可自定义日志文件名
日志最终目的是为了方便查阅、比对信息。所以就我个人而言,除了日志的基本内容外,更加需求自定义日志文件名。这样一来,不同功能之间的日志可以靠文件天然区分,减少过滤日志的时间。
然后对于单一日志文件而言,文件大小需要设置上限,文件存在时间需要设置上限,至于压缩打包可以自行通过脚本控制。
目前日志功能有一个缺点,因为从组装日志内容,到落入硬盘整个过程是异步,所以在程序出现异常的情况下,有小概率会导致异常前部分待打印日志丢失。
使用
import “github.com/lanyutc/blue”
LOG = blue.GetLogger(“RollLog”, 10)
DLOG = blue.GetDayLogger(“DayLog”, 30)
HLOG = blue.GetHourLogger(“HourLog”,24)
(全文结束)
转载文章请注明出处:漫漫路 - lanindex.com