The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
jander

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

  •  
  •   jander · Sep 17, 2015 · 2279 views
    This topic created in 3898 days ago, the information mentioned may be changed or developed.

    项目地址: https://github.com/jander/golog

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

    欢迎各种意见。

    11 replies    2015-09-18 17:19:59 +08:00
    kevin8096
        1
    kevin8096  
       Sep 17, 2015
    请问用的什么编辑器
    jander
        2
    jander  
    OP
       Sep 17, 2015
    golang 用 sublime text + gocode, 以及 gosublime 插件。
    88250
        3
    88250  
       Sep 17, 2015
    @kevin8096 可以试试 Wide
    yy77
        4
    yy77  
       Sep 17, 2015
    没人提 LiteIDE 么?
    0987363
        5
    0987363  
       Sep 17, 2015
    看上去跟 lumber 有点像。
    jander
        6
    jander  
    OP
       Sep 17, 2015
    @0987363 刚看了一下,是挺像。

    不像的地方:

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

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

    var logger = Mlog (consoleLog, fileLog )

    另外, Golog 的 example 是多个 goroutine 写日志的例子,你可以跑一下,试试,不会乱。
    0987363
        9
    0987363  
       Sep 18, 2015
    @jander 他这个就是初始创建的么,显然是全局的

    另外时间错乱跟 lumber 没关系。应该是 go 里面哪个地方出问题,只在一台机器上发现乱了
    jander
        10
    jander  
    OP
       Sep 18, 2015
    @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
        11
    0987363  
       Sep 18, 2015
    好吧,你这样当然可以, 但要传点参数就没法了,比如输出改文件等。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1082 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 22:50 · PVG 06:50 · LAX 15:50 · JFK 18:50
    ♥ Do have faith in what you're doing.