[go] os 패키지를 사용하여 시스템 로그 및 이벤트 처리

운영 체제와 상호작용하고 시스템 로그 및 이벤트를 처리하는 데 os 패키지를 사용할 수 있습니다. 이 패키지는 시스템 호출과 상호 작용하기 위한 함수를 제공하여 로그 파일 작성, 프로세스 관리, 디렉터리 탐색 등 다양한 작업을 할 수 있습니다.

로그 파일 작성

os 패키지를 사용하여 로그 파일을 생성하고 쓰기 위해 다음과 같은 예제 코드를 활용할 수 있습니다.

package main

import (
	"log"
	"os"
)

func main() {
	file, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		log.Fatalf("failed to open log file: %v", err)
	}
	defer file.Close()

	log.SetOutput(file)
	log.Println("Logging to a file!")
}

이 코드는 “app.log” 파일을 생성하고 각 로그 메시지를 파일에 기록합니다.

프로세스 관리

os 패키지를 사용하여 실행 중인 프로세스의 상태를 확인하고 프로세스를 제어할 수도 있습니다. 예를 들어, 현재 프로세스의 ID를 확인하거나 새로운 프로세스를 시작할 수 있습니다.

package main

import (
	"fmt"
	"os"
)

func main() {
	pid := os.Getpid()
	fmt.Println("Current Process ID:", pid)

	cmd := "ls"
	args := []string{"-l"}
	if err := os.StartProcess(cmd, args, &os.ProcAttr{Files: []*os.File{os.Stdin, os.Stdout, os.Stderr}}); err != nil {
		fmt.Println("Failed to start process:", err)
	}
}

위의 예제 코드는 현재 프로세스의 ID를 출력하고, “ls -l” 명령어를 실행하여 새로운 프로세스를 시작합니다.

디렉터리 탐색

os 패키지를 사용하여 디렉터리를 생성하거나 파일 목록을 확인하는 등의 작업을 수행할 수도 있습니다.

package main

import (
	"fmt"
	"os"
)

func main() {
	dirName := "testdir"
	if err := os.Mkdir(dirName, 0755); err != nil {
		fmt.Println("Failed to create directory:", err)
	}

	files, err := os.ReadDir(".")
	if err != nil {
		fmt.Println("Failed to read directory:", err)
	}
	fmt.Println("Files in the current directory:")
	for _, file := range files {
		fmt.Println(file.Name())
	}
}

위 코드는 “testdir”이라는 디렉터리를 생성하고 현재 디렉터리의 파일 목록을 출력합니다.

os 패키지를 사용하여 다양한 시스템 관련 작업을 수행할 수 있으며, 이를 통해 로그 처리, 프로세스 관리, 디렉터리 탐색 등 다양한 시스템 작업을 수행할 수 있습니다.

이상입니다. 도움이 되셨기를 바랍니다.