Go를 사용하여 파일에 로그인하려는 시도에서 다음을 포함한 여러 접근 방식이 시도되었습니다.
func TestLogging(t *testing.T) { if !FileExists("logfile") { CreateFile("logfile") } f, err := os.Open("logfile") if err != nil { t.Fatalf("error: %v", err) } // attempt #1 log.SetOutput(io.MultiWriter(os.Stderr, f)) log.Println("hello, logfile") // attempt #2 log.SetOutput(io.Writer(f)) log.Println("hello, logfile") // attempt #3 log.SetOutput(f) log.Println("hello, logfile") }
그러나 로그파일(logfile)을 생성했음에도 불구하고 어떠한 정보도 기록되지 않았습니다.
해결책은 다음을 사용하는 것입니다. os.Open 대신 os.OpenFile을 사용하면 파일 액세스 권한을 더 효과적으로 제어할 수 있습니다. 다음 코드는 로그 파일에 성공적으로 기록됩니다.
f, err := os.OpenFile("testlogfile", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666) if err != nil { log.Fatalf("error opening file: %v", err) } defer f.Close() log.SetOutput(f) log.Println("This is a test log entry")
이 접근 방식은 다음 플래그와 함께 os.OpenFile을 활용합니다.
os.OpenFile을 사용하면 로그가 성공적으로 기록되도록 하는 데 필요한 파일 액세스 권한을 지정할 수 있습니다. 파일입니다.
위 내용은 Go에서 파일에 로그를 성공적으로 쓰는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!