github.com/astaxie/beego/logs 下的日志包打印

249 阅读2分钟

1.常用简洁版

package main
import "github.com/astaxie/beego/logs"
func main(){
   //打开文件名,行号支持
   logs.EnableFuncCallDepth(true)
   //logs 源码包处于第 2 层级,这里调用会涨一个层级,所以: 设置为第 3 层级
   logs.SetLogFuncCallDepth(3)
   //输出到终端
   _ = logs.SetLogger("console")
}

2.进阶详细版本

package main
import (
   "encoding/json"
   "fmt"
   "runtime"

   "github.com/astaxie/beego/logs"
)
func main() {

   //输出: 文件名+文件行号
   logs.EnableFuncCallDepth(true)
   //logs 源码包处于第 2 层级,这里调用会涨一个层级,所以: 设置为第 3 层级
   logs.SetLogFuncCallDepth(3)
   config := make(map[string]interface{})
   // 初始化日志文件的配置
   config["filename"] = "project.log" //保存的文件名
   //config["filename"] = "E:\share\command\beego 输出日志文件\text.log"//带有路径的写法
   config["level"] = logs.LevelDebug  //日志保存的时候的级别,默认是 Trace 级别
   config["maxlines"] = 0             //每个文件保存的最大行数,默认值 1000000
   config["maxsize"] = 0              //每个文件保存的最大尺寸,默认值是 1 << 28, //256 MB
   config["daily"] = true             //是否按照每天 logrotate(刷新),默认是 true
   config["maxdays"] = 10             //文件最多保存多少天,默认保存 7 天
   config["color"] = true             //是否开启打印日志彩色打印(需环境支持彩色输出)
   config["perm"] = "0777"            //日志文件权限
   config["rotate"] = true            //是否开启 logrotate,默认是 true

   // 将 config 数据结构序列化成 json 数据结构,然后放进字节切片里面(以ascll码存放)
   // 因为只有 xml,json,proto 等数据结构可以用于网络传输
   // 将配置序列化
   configStr, err := json.Marshal(config)
   if err != nil {
      fmt.Println("marshal failed, err:", err)
      return
   }
   //输出到终端
   _ = logs.SetLogger(logs.AdapterConsole)
   //输出到日志文件
   //将序列化的内容搭载到日志适配器上面
   _ = logs.SetLogger(logs.AdapterFile, string(configStr))
   //Caller 函数可以拿到: 方法名 + 文件绝对路径 + 行号
   funcName, _, _, _ := runtime.Caller(0)

   logs.Debug(runtime.FuncForPC(funcName).Name(), "11111111111111111111111111111111")
   logs.Info(runtime.FuncForPC(funcName).Name(), "222222222222222222222222222222222")
   logs.Warn(runtime.FuncForPC(funcName).Name(), "333333333333333333333333333333333")
   logs.Error(runtime.FuncForPC(funcName).Name(), "444444444444444444444444444444444")
   logs.Critical(runtime.FuncForPC(funcName).Name(), "5555555555555555555555555555555555")

}