파일과 콘솔에 로그 출력
go-zero 프레임워크를 사용하면서 로그를 파일과 콘솔에 동시에 출력하려면 다음 단계로 설정하고 코드를 작성합니다.
단계:
-
설정 파일
config.yaml생성먼저 로깅 모드와 인코딩 형식을 설정하는 YAML 파일을 정의합니다.
Mode: fileEncoding: json-
메인 프로그램
main.go작성다음 Go 코드는 설정 파일을 로드하고 로그를 파일과 콘솔 양쪽으로 출력하도록 설정합니다.
package main
import ( "os" "time"
"github.com/zeromicro/go-zero/core/conf" "github.com/zeromicro/go-zero/core/logx" "github.com/zeromicro/go-zero/core/proc")
func main() { var c logx.LogConf conf.MustLoad("config.yaml", &c) // 설정 파일을 로드합니다 logx.MustSetup(c) // 로깅 설정을 초기화합니다 logx.AddWriter(logx.NewWriter(os.Stdout)) // 콘솔 출력을 추가합니다
for { select { case <-proc.Done(): // 프로그램 종료가 필요한지 확인합니다 return default: time.Sleep(time.Second) logx.Info(time.Now()) // 현재 시간을 로그로 남깁니다 } }}자세한 설명:
-
설정 파일(
config.yaml)Mode: file은 로그를 파일로 출력한다는 뜻입니다.Encoding: json은 로그 형식을 JSON으로 사용한다는 뜻입니다.
-
메인 프로그램(
main.go)conf.MustLoad로 설정 파일을 로드합니다.logx.MustSetup을 호출해 로깅 시스템을 설정합니다.logx.AddWriter로 추가 출력 대상을 등록합니다. 여기서는 표준 출력(console)을 추가합니다.- 무한 루프에서 1초마다 현재 시간을 기록합니다.
select와proc.Done()을 함께 사용하면 프로그램을 부드럽게 종료할 수 있습니다.
위 설정과 코드를 사용하면 go-zero에서 로그를 파일과 콘솔에 동시에 출력할 수 있습니다.