golang的应用程序异常结束----各位大神帮忙分析下

wslzwps · · 1600 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

**加了段代码后,程序跑个两三天就挂一次** 在原有的代码中加了一段如下的功能: 1 遍历文件夹,获取以“no_”命名开头的文件。 2 根据获取的结果做其他操作----------( SetLevel(curLevel) ) 下面是代码的主题 var curLevel int levelCheck := func(logPath string) { if logPath == "" { return } for { time.Sleep(time.Second * 30) s, err := ListLevelKeys(logPath) if err != nil { continue } level := GetMaxLevel(s) if curLevel != level { curLevel = level log.GetLog().SetLevel(curLevel) //一般情况下不会执行 } } } go levelCheck(s.logDir) 加上之后的程序会异常结束,结束的时候没有panic。也没有coredump文件 ***** 附上其他函数完整的定义: func ListLevelKeys(dirPth string) (files []string, err error) { if dirPth == "" { return nil, errors.New("dirPht is null") } dir, err := ioutil.ReadDir(dirPth) if err != nil { return nil, err } for _, fi := range dir { if fi.IsDir() { continue } filename := fi.Name() if len(filename) < 3 { continue } if filename[:3] == "no_" { files = append(files, filename) } } return files, nil } func GetMaxLevel(keys []string) (maxlevel int) { if keys == nil { return 0 } GetLevel := func(key string) (level int) { if len(key) < 3 { return } switch key { case "no_debug": level = log.DebugLevel + 1 case "no_info": level = log.InfoLevel + 1 case "no_warn": level = log.WarnLevel + 1 case "no_err": level = log.ErrorLevel + 1 case "no_fatal": level = log.FatalLevel + 1 case "no_read": level = log.ReadLevel + 1 case "no_write": level = log.UpdateLevel + 1 } return } for _, key := range keys { level := GetLevel(key) if level > maxlevel { maxlevel = level } } return } log.GetLog().SetLevel(curLevel){ //...... //这个函数之后dir下的"no_*"文件有变动时才会执行,应该不会引起程序异常结束吧? //一般是不会执行的 }

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1600 次点击  
加入收藏 微博
3 回复  |  直到 2016-08-19 13:38:21
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传