diff --git a/g/database/gdb/gdb.go b/g/database/gdb/gdb.go index 1a09d1d39..22f7625d8 100644 --- a/g/database/gdb/gdb.go +++ b/g/database/gdb/gdb.go @@ -269,6 +269,10 @@ func (bs *dbBase) getSqlDb(master bool) (sqlDb *sql.DB, err error) { if err != nil { return nil, err } + // 默认值设定 + if node.Charset == "" { + node.Charset = "utf8" + } v := bs.cache.GetOrSetFuncLock(node.String(), func() interface{} { sqlDb, err = bs.db.Open(node) if err != nil { diff --git a/g/database/gdb/gdb_mysql.go b/g/database/gdb/gdb_mysql.go index 5ddfcc3c7..dc651ac2c 100644 --- a/g/database/gdb/gdb_mysql.go +++ b/g/database/gdb/gdb_mysql.go @@ -23,7 +23,8 @@ func (db *dbMysql) Open (config *ConfigNode) (*sql.DB, error) { if config.Linkinfo != "" { source = config.Linkinfo } else { - source = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?multiStatements=true", config.User, config.Pass, config.Host, config.Port, config.Name) + source = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&multiStatements=true", + config.User, config.Pass, config.Host, config.Port, config.Name, config.Charset) } if db, err := sql.Open("mysql", source); err == nil { return db, nil diff --git a/g/os/glog/glog_logger.go b/g/os/glog/glog_logger.go index cd147ffe7..2d8e4fe37 100644 --- a/g/os/glog/glog_logger.go +++ b/g/os/glog/glog_logger.go @@ -141,6 +141,13 @@ func (l *Logger) getFilePointer() *gfpool.File { file, _ := gregex.ReplaceStringFunc(`{.+?}`, l.file.Val(), func(s string) string { return gtime.Now().Format(strings.Trim(s, "{}")) }) + // 如果日志目录不存在则创建目录路径 + if !gfile.Exists(path) { + if err := gfile.Mkdir(path); err != nil { + fmt.Fprintln(os.Stderr, fmt.Sprintf(`[glog] mkdir "%s" failed: %s`, path, err.Error())) + return nil + } + } fpath := path + gfile.Separator + file if fp, err := gfpool.Open(fpath, gDEFAULT_FILE_POOL_FLAGS, gDEFAULT_FPOOL_PERM, gDEFAULT_FPOOL_EXPIRE); err == nil { return fp @@ -156,7 +163,7 @@ func (l *Logger) SetPath(path string) error { // 如果目录不存在,则递归创建 if !gfile.Exists(path) { if err := gfile.Mkdir(path); err != nil { - fmt.Fprintln(os.Stderr, fmt.Sprintf(`glog mkdir "%s" failed: %s`, path, err.Error())) + fmt.Fprintln(os.Stderr, fmt.Sprintf(`[glog] mkdir "%s" failed: %s`, path, err.Error())) return err } } diff --git a/geg/os/glog/glog_pool.go b/geg/os/glog/glog_pool.go new file mode 100644 index 000000000..a8e2fa668 --- /dev/null +++ b/geg/os/glog/glog_pool.go @@ -0,0 +1,19 @@ +package main + +import ( + "gitee.com/johng/gf/g/os/glog" + "gitee.com/johng/gf/g/os/gtime" + "time" +) + +// 测试删除日志文件是否会重建日志文件 +func main() { + path := "/Users/john/Temp/test" + glog.SetPath(path) + for { + glog.Println(gtime.Now().String()) + time.Sleep(time.Second) + } +} + +