为了账号安全,请及时绑定邮箱和手机立即绑定

未创建日志文件

未创建日志文件

Go
LEATH 2022-10-04 16:40:24
我正在使用 Go。我想创建一个名为webapp的日志文件.log当我运行去运行主.go。但是,当我运行 go run main.go 时,消息出现在终端中,并且不会创建日志文件。我无法从消息中看出哪个位置导致无法创建日志文件。如果有人可以帮助我,请告诉我。主要.go"2021/09/25 14:58:55 open : no such file or directory" package mainimport (    "fmt"    "golang_todo_app/config"    "log")func main() {  fmt.Println(config.Config.Port)  fmt.Println(config.Config.SQLDriver)  fmt.Println(config.Config.DbName)  fmt.Println(config.Config.LogFile)  log.Println("test")}配置/配置。package configimport (    "golang_todo_app/utils"    "log"    "gopkg.in/go-ini/ini.v1")type ConfigList struct {    Port string    SQLDriver string    DbName string    LogFile string}var Config ConfigListfunc init () {  LoadConfig()  utils.LoggingSettings(Config.LogFile)}func LoadConfig() {  cfg, err := ini.Load("config.ini")  if err != nil {    log.Fatalln()  }  Config = ConfigList{    Port: cfg.Section("web").Key("port").MustString("8080"),    SQLDriver: cfg.Section("db").Key("driver").String(),    DbName: cfg.Section("db").Key("name").String(),    LogFile: cfg.Section("web").Key("logfile").String(),  }}utils/logging.gopackage utilsimport (    "io"    "log"    "os")func LoggingSettings(logFile string) {  logfile, err := os.OpenFile(logFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)  if err != nil {    log.Fatalln(err)  }  multiLogFile := io.MultiWriter(os.Stdout, logfile)  log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)  log.SetOutput(multiLogFile)}
查看完整描述

1 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

“2021/09/25 14:58:55 打开:没有这样的文件或目录”

看看你的代码,最有可能引发此错误的地方是下一个:

logfile, err := os.OpenFile(logFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)

通常,如果我们打开一个没有权限的文件,例如 /root/log.txt,它可能会生成下一个:

2021/09/25 17:50:07 open /root/log.txt: permission denied

您可以看到将显示的 将告诉用户哪个文件无法打开,但对您来说,您的错误在 之后不返回任何内容。这意味着对于下一个代码:/root/log.txtopen

LoggingSettings(Config.LogFile)

分析器不返回任何内容。正确的设置也许下一个:Config.LogFileini

配置.ini:

[web]
logfile=/tmp/log.txt

您应该检查您的文件,看看是否有任何错误使代码无法解析有效值。inilogfile

顺便说一句,下一个代码将在导入时发生,因此您的打印在下一个函数之后执行,如果错误在 中出现错误,则您在main中的打印将没有机会运行。"golang_todo_app/config"maininit

func init () {
  LoadConfig()
  utils.LoggingSettings(Config.LogFile)
}


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信