10-21
parent
083ec1e2f4
commit
38a65d5d2d
|
@ -0,0 +1,20 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
//json
|
||||
|
||||
type person struct {
|
||||
Name string `json:"name"`
|
||||
Age int `json:"age"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
str := `{"name":"周林","age":9000}`
|
||||
var p person
|
||||
json.Unmarshal([]byte(str), &p) //注意这里传值要对应传递结构体类型,根据结构体的key去对应匹配value
|
||||
fmt.Println(p.Name, p.Age)
|
||||
}
|
|
@ -1,6 +1,9 @@
|
|||
package mylogger_test
|
||||
|
||||
import "fmt"
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
// logger 日志结构体
|
||||
type Logger struct {
|
||||
|
@ -19,9 +22,16 @@ func NewLog(levelStr string) Logger {
|
|||
}
|
||||
}
|
||||
|
||||
func log(lv logLevel,msg string){
|
||||
fmt.Printf()
|
||||
}
|
||||
|
||||
func (l Logger) Debug(msg string) {
|
||||
if l.enable(DEBUG) {
|
||||
now := time.Now()
|
||||
fmt.Printf("[%s] %s" now.Format("2006-01-02 15:04:05"),msg)
|
||||
funcName, fileName, lineNo := getInfo(2)
|
||||
fmt.Printf("[%s][DEBUG][%s:%s:%d]%s", now.Format("2006-01-02 15:04:05"), ,fileName,funcName,lineNumber,msg)
|
||||
}
|
||||
}
|
||||
func (l Logger) Info(msg string) {
|
||||
fmt.Println(msg)
|
||||
|
|
|
@ -1,11 +1,22 @@
|
|||
package mylogger_test
|
||||
|
||||
import "runtime"
|
||||
import (
|
||||
"fmt"
|
||||
"path"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
}
|
||||
|
||||
func getInfo(n int) {
|
||||
pc, fine, line, ok := runtime.Caller()
|
||||
func getInfo(skip int) (funcName, fileName string, lineNo int) {
|
||||
pc, file, lineNo, ok := runtime.Caller(skip)
|
||||
if !ok {
|
||||
fmt.Printf("runtime.Caller() failed\n")
|
||||
return
|
||||
}
|
||||
funcName = runtime.FunForPC(pc).Name()
|
||||
fileName = path.Base(file)
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue