1 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
fmt.Printf()
它寫入標(biāo)準(zhǔn)輸出的文件:
Printf 根據(jù)格式說明符格式化并寫入標(biāo)準(zhǔn)輸出。
所以沒有fmt.SetOutput()
將其重定向到您的文件。
但請(qǐng)注意,標(biāo)準(zhǔn)輸出是包中的一個(gè)變量os
:
Stdin、Stdout 和 Stderr 是指向標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤文件描述符的打開文件。
請(qǐng)注意,Go 運(yùn)行時(shí)會(huì)針對(duì)恐慌和崩潰寫入標(biāo)準(zhǔn)錯(cuò)誤;關(guān)閉 Stderr 可能會(huì)導(dǎo)致這些消息轉(zhuǎn)到其他地方,可能會(huì)轉(zhuǎn)到稍后打開的文件。
var?( ????????Stdin??=?NewFile(uintptr(syscall.Stdin),?"/dev/stdin") ????????Stdout?=?NewFile(uintptr(syscall.Stdout),?"/dev/stdout") ????????Stderr?=?NewFile(uintptr(syscall.Stderr),?"/dev/stderr") )
并且您可以將自己的設(shè)置os.File
為os.Stdout
.?盡管對(duì)記錄器使用相同的方法os.File
并將其設(shè)置為不是一個(gè)好主意os.Stdout
,但對(duì)其File.Write()
方法的訪問不會(huì)在fmt
包和記錄器之間同步。
最好是使用log.Logger
everywhere (你正確設(shè)置了它的輸出,所以日志消息會(huì)被正確地序列化)。
- 1 回答
- 0 關(guān)注
- 145 瀏覽
添加回答
舉報(bào)