golang log
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | package log import ( "log" "os" "time" ) var ( debug_log = "debug.log" log_format = "2006-01-02-15" ) var fileHandle *os.File var cs chan string func init() { file_name := getFileName() fileHandle, _ = os.OpenFile(file_name, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0755) log.SetOutput(fileHandle) cs = make( chan string, 1024) go WriteChan(cs) } func getFileName() string { now := time.Now() date := now.Format(log_format) file_path := "/your/local/dir/" filename := file_path + debug_log + "." + date return filename } func WriteDebugLog(content string) { //check log file curFileName := getFileName() if _, err := os.Stat(curFileName); os.IsNotExist(err) { file_name := getFileName() fileHandle, _ = os.OpenFile(file_name, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0755) log.SetOutput(fileHandle) } //WriteSingleLog(content) cs <- content } func WriteChan(cs chan string) { for { select { case con := <-cs: WriteSingleLog(con) //beego.Debug(len(cs)) } } } func WriteSingleLog(content string) { log.Println(content) } |
标签:
go
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· ShadowSql之.net sql拼写神器
· 使用MCP C# SDK开发MCP Server + Client
· 感觉程序员要被 AI 淘汰了?学什么才有机会?
· MQTT协议发布和订阅的实现,一步步带你实现发布订阅服务。