github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgLog/Log.go (about)

     1  package kmgLog
     2  
     3  import "github.com/bronze1man/kmg/kmgTime"
     4  
     5  // 写一条log, category是分类名 data是需要调试的对象
     6  // 实际格式,用户可以随意设定
     7  // data 必须为可以json.Marshal的数据
     8  // 错误处理方式为 输出到stderr (不用panic,是因为log坏了,程序应该还可以继续执行没那么重要,不忽略,是因为忽略错误后果更严重)
     9  // 这个算是LogToRow的语法糖.
    10  func Log(cat string, data ...interface{}) {
    11  	logRow := LogRow{
    12  		Cat:  cat,
    13  		Time: kmgTime.NowFromDefaultNower(),
    14  		Data: data,
    15  		//Data: make([]json.RawMessage, len(data)),
    16  	}
    17  	defaultWriter(logRow)
    18  	//defaultLogger(cat, data...)
    19  }
    20  
    21  func LogToRow(row LogRow) {
    22  	defaultWriter(row)
    23  }
    24  
    25  var defaultWriter LogWriter = StdoutLogWriter
    26  
    27  /*
    28  example:
    29  	kmgLog.SetLogWriter(kmgLog.StdoutLogWriter)
    30  */
    31  func SetLogWriter(w LogWriter) {
    32  	defaultWriter = w
    33  }
    34  
    35  func SetDefaultThreadFileLog(logDir string) {
    36  	defaultWriter = ThreadLogWriter(NewFileLogWriter(logDir))
    37  }
    38  
    39  func SetDefaultStdoutAndFileLog(logDir string) {
    40  	defaultWriter = ThreadLogWriter(MultiLogWriter(StdoutLogWriter, NewFileLogWriter(logDir)))
    41  
    42  }