add Charset support for mysql of gdb package; fix issue for glog for log writing failed when the folder path wa deleted

This commit is contained in:
John
2018-12-19 18:15:22 +08:00
parent cdd6fc7c1e
commit fff31e0f4f
4 changed files with 33 additions and 2 deletions

View File

@ -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 {

View File

@ -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

View File

@ -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
}
}

19
geg/os/glog/glog_pool.go Normal file
View File

@ -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)
}
}