玩了几天 golang, 写了一个 log 库。

2015-09-17 11:56:04 +08:00
 jander
项目地址: https://github.com/jander/golog

- 实现 Debug, Info, Warn, Error 不同级别的日志。
- 实现滚动日志。

欢迎各种意见。
1547 次点击
所在节点    Go 编程语言
11 条回复
kevin8096
2015-09-17 14:30:58 +08:00
请问用的什么编辑器
jander
2015-09-17 14:51:16 +08:00
golang 用 sublime text + gocode, 以及 gosublime 插件。
88250
2015-09-17 15:02:16 +08:00
@kevin8096 可以试试 Wide
yy77
2015-09-17 15:18:09 +08:00
没人提 LiteIDE 么?
0987363
2015-09-17 15:21:57 +08:00
看上去跟 lumber 有点像。
jander
2015-09-17 15:38:21 +08:00
@0987363 刚看了一下,是挺像。

不像的地方:

Golog 内置了全局 logger 对象, 不用每次都要创建 logger 对象。比如说:

在 `test1.go`里可以直接用:`logger.Debug ("....")`, 在其他.go 文件中也一样的用,不用重复创建 logger. logger 对象在 func main () 设置,然后全局有效。
0987363
2015-09-18 09:27:46 +08:00
@jander lumber 貌似也是全局吧,另外这样多 goroutine 写日志我遇到过取得的时间错乱, 然后我改成了单线程写日志
jander
2015-09-18 13:21:26 +08:00
@0987363 lumber ,需要创建的,比如说要 console,file 两种日志,要这样:

var logger = Mlog (consoleLog, fileLog )

另外, Golog 的 example 是多个 goroutine 写日志的例子,你可以跑一下,试试,不会乱。
0987363
2015-09-18 14:47:15 +08:00
@jander 他这个就是初始创建的么,显然是全局的

另外时间错乱跟 lumber 没关系。应该是 go 里面哪个地方出问题,只在一台机器上发现乱了
jander
2015-09-18 15:24:26 +08:00
@0987363 想象一下,你要开发一个库,需要 log,于是你创建了一个 loger 对象; 然后你又要开发一个库,需要 log,于是你又创建了一个 loger 对象; 然后,你写 main.go 使用你的 pkgs, 很凌乱是吧;

改进一下,你可以专门写一个库,创建一个 logger ,然后你开发的 pkg 都使用它.

不管怎么弄,都没有这样好:

//test1.go:
import (
"github.com/jander/golog/logger"
)

func test2 (){
logger.Debug ("test")
}

//test2.go:
import (
"github.com/jander/golog/logger"
)

func test2 (){
logger.Debug ("test2")
}
0987363
2015-09-18 17:19:59 +08:00
好吧,你这样当然可以, 但要传点参数就没法了,比如输出改文件等。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/221391

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX