go 输出日志文件:goland 输出日志文件 进阶版
最近写 TCP 通讯,很多时候需要做日志去分析,所以写了个 loghelp,简单又方便。哈哈哈~,希望能帮到大家。
关于:go / goland : log 日志
我自己用起来,感觉是很舒服的:对 log 的使用,我比较粗浅,也希望各位大佬能多多指点
进阶版:可以自己创建文件,按小时分文件,按天分文件夹。非常舒适。下面是源码:复制后就可以直接运行看结果
/*
* Copyright(C),2019-2020, email: 952651117@qq.com
* Author: dao
* Version: 1.0.0
* Date: 2021/6/11 13:54
* Description:
*
*/
package main
import (
"fmt"
"io"
"log"
"os"
"time"
)
var logFile io.Writer
/**
* @Description:判断所给路径是否为文件
* @param path
* @return os.FileInfo
* @return bool
*/
func IsFile(path string) (os.FileInfo, bool) {
f, flag := IsExists(path)
return f, flag && !f.IsDir()
}
/**
* @Description:判断路径是否存在
* @param path
* @return os.FileInfo
* @return bool
*/
func IsExists(path string) (os.FileInfo, bool) {
f, err := os.Stat(path)
return f, err == nil || os.IsExist(err)
}
/**
* @Description: 写日志
* @param msg
* @param title
*/
func Logwrite(msg string, title string) {
//设置时间变量
now := time.Now()
//前提:创建一个 log 文件夹到根目录(这样最好了)。如果文件目录不存在,也可以使用下面代码去创建文件目录
folderName := "log/" + now.Format("20060102")
folderTemp := ""
for _, v := range strings.Split(folderName, "/") {
//判断文件,如果不存在,那么就创建
folderTemp += v
_, IsExistsPath := IsExists(folderTemp)
if !IsExistsPath {
//创建文件夹代码
os.Mkdir(folderTemp, os.ModePerm)
}
folderTemp += "/"
}
//设置日志文件,做好日志文件管理:这里是用时间做文件,每个小时生成不同文件
filefullname := "./" + folderName + "/" + now.Format("20060102") + now.Format("_15") + ".txt"
//判断文件是否存在
_, b := IsFile(filefullname)
if b {
//打开文件,
logFile, _ = os.OpenFile(filefullname, os.O_APPEND, 0666)
} else {
//新建文件
logFile, _ = os.Create(filefullname)
}
loger := log.New(logFile, "log_", log.Ldate|log.Ltime|log.Lshortfile)
//SetFlags设置输出选项
loger.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
//设置输出前缀,如果不传输前缀,那么就不输出
if title == "" {
loger.SetPrefix("log_")
} else {
loger.SetPrefix(title + "_")
}
//设置头信息
rs := []rune(msg)
msghead := ""
//为了美观:如果超过20个字符就换行
if len(rs) >= 20 {
msghead = string(rs[0:20])
//输出一条日志:头信息,10位,可以通过上面的参数来调整:rs[0:10]
loger.Output(2, msghead+"[省略...]\n"+msg+"\n")
} else {
loger.Output(2, msg+"\n")
}
//打印在控制台
fmt.Println(msg)
}
func main() {
//输出20个字内的信息,用main 做信息头
Logwrite("wewewee", "Main")
//输出20个字以上的信息,用默认信息头
Logwrite("wewewee11111111111111111111111111111111111112222222222222222222222222", "")
}
复制代码
效果:
控制台:
日志文件:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END