[go] log 패키지를 이용한 로깅과 동시에 보안 이벤트 로깅

Go 언어에서 로깅은 애플리케이션의 디버깅, 모니터링 및 보안을 위해 중요한 역할을 합니다. 이를 위해 Go 표준 라이브러리에는 log 패키지가 내장되어 있으며, 이 패키지를 사용하여 간편하게 로깅과 동시에 보안 이벤트 로깅을 수행할 수 있습니다.

이번 포스트에서는 Go 언어를 사용하여 log 패키지를 이용해 로깅을 하는 방법과 동시에 보안 이벤트 로깅을 하는 방법에 대해 알아보겠습니다.

1. 로깅

로깅을 하기 위해서는 log 패키지를 임포트해야 합니다.

import "log"

로깅은 주로 다음과 같이 사용됩니다.

log.Println("This is a log message")
log.Printf("Error occurred: %s", err)

Println() 메서드는 주어진 메시지를 로깅하고, Printf() 메서드는 형식화된 메시지를 로깅합니다.

2. 보안 이벤트 로깅

보안 이벤트 로깅을 하기 위해서는 로깅 레벨을 설정해야 합니다. 로깅 레벨은 안전, 정보, 경고 등으로 구분됩니다. go-log 패키지를 사용하여 로그를 작성하고 필드 레벨에 대한 제어를 통해 더 구체적인 로깅 수준을 설정할 수 있습니다.

예를 들어:

package main

import (
	"github.com/uber-go/zap"
	"go.uber.org/zap/zapcore"
)

func main() {
	logger, _ := zap.NewProduction()
	defer logger.Sync()
	sugar := logger.Sugar()

	sugar.Infow("login failed",
		"username", "exampleUser",
		"ip", "1.2.3.4",
		"status", "failed",
	)
}

이 코드는 “login failed”라는 메시지와 함께 유저명, IP 주소, 상태 같은 필드에 대한 정보를 로깅합니다. 여기서 Infow()는 정보 수준의 로깅을 표시합니다.

결론

Go 언어에서 log 패키지를 사용하여 간단하게 로깅과 보안 이벤트 로깅을 수행할 수 있습니다. 로그 레벨을 설정하여 필요한 정보를 로깅하고, 필드 레벨에 대한 제어를 통해 더 구체적인 로깅 수준을 설정할 수 있습니다.

[참고 자료]