我正在使用 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.txt
open
LoggingSettings(Config.LogFile)
分析器不返回任何内容。正确的设置也许下一个:Config.LogFile
ini
配置.ini:
[web] logfile=/tmp/log.txt
您应该检查您的文件,看看是否有任何错误使代码无法解析有效值。ini
logfile
顺便说一句,下一个代码将在导入时发生,因此您的打印在下一个函数之后执行,如果错误在 中出现错误,则您在main中的打印将没有机会运行。"golang_todo_app/config"
main
init
func init () { LoadConfig() utils.LoggingSettings(Config.LogFile) }
- 1 回答
- 0 关注
- 86 浏览
添加回答
举报
0/150
提交
取消