Golangを使っています。
go run main.goを実行したときにwebapp.logというlogファイルを作成したいです。
しかしgo run main.goを実行すると2021/09/25 14:58:55 open : no such file or directory
というメッセージがターミナルに表示されlogファイルが作成されません。
メッセージを見てもどの場所が原因でlogファイルが作成されないのかがわからないです。
わかる人いましたらご教授お願いしたいです。
main.go
package main import ( "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") }
config/config.go
package config import ( "golang_todo_app/utils" "log" "gopkg.in/go-ini/ini.v1" ) type ConfigList struct { Port string SQLDriver string DbName string LogFile string } var Config ConfigList func 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.go
package utils import ( "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件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。