PHP 편집자 Zimo가 구성 파일을 사용하여 Logger를 우아하게 구성하고 로그 회전을 구현하는 방법을 공유합니다. Logger는 문제 해결 및 로그 추적을 용이하게 하기 위해 애플리케이션의 실행 상태를 기록하는 데 도움이 되는 일반적으로 사용되는 로깅 도구입니다. Logger를 사용하면 구성 파일을 통해 로그 형식, 출력 대상, 로그 수준 등을 유연하게 정의할 수 있으며 로그 순환 규칙을 구성하여 로그를 자동으로 관리하고 저장할 수도 있습니다. 합리적인 구성을 통해 보다 유연하고 효율적인 로깅 및 관리를 달성할 수 있습니다. 이 기사에서는 구성 파일을 사용하여 Logger를 우아하게 구성하고 로그 회전을 지원하는 방법을 자세히 소개합니다.
test1()
是官方文档推荐的日志轮转和切割库ngopkg.in/natefinch/lumberjack.v2
. test2()
는 yaml을 사용하여 공식 문서의 기본 구성에 따라 구성을 읽는 로거입니다. 주요 기능을 실행한 후,
콘솔의 출력:
2023-05-15t08:49:16.555+0800 |信息|记录器构建成功:来自 yaml 的配置 | {“app”:“jpz”}
로그 파일에 출력 foo.log
:
{"level":"info","ts":1684111756.5545945,"msg":"记录器构建成功:lumberjack.logger"}
이 두 로그는 확실히 다릅니다.
둘 다 구성 파일을 사용하여 config_log_zap.yaml
让所有配置生效,并让lumberjack
로그 회전 및 분할을 완료하는 것을 지원합니다.
구성 파일을 통해 필요한 내용을 빠르게 적용할 수 있도록 콘솔과 로그 파일의 출력이 동일해야 합니다. 개발 과정에서 과거 출력 메시지를 추적하고 기록해야 하기 때문에 콘솔과 로그 파일이 필요합니다.
콘솔의 출력:
2023-05-15t08:49:16.555+0800 |信息|记录器构建成功:来自 yaml 的配置 | {“app”:“jpz”}
로그 파일에 출력 foo.log
:
2023-05-15t08:49:16.555+0800 |信息|记录器构建成功:来自 yaml 的配置 | {“app”:“jpz”}
위의 두 가지 요구 사항을 충족하기 위해 test1()
과 test1()
和 test2()
合并为一个函数 test0()
를 하나의 함수 test0()
으로 결합하는 방법은 무엇입니까?
좀 도와주세요. 저는 이 일을 오랫동안 해왔습니다.
main.go
으아아아config_log_zap.yaml
package main import ( "gopkg.in/yaml.v3" "os" "go.uber.org/zap" "go.uber.org/zap/zapcore" "gopkg.in/natefinch/lumberjack.v2" ) func test1() { // lumberjack.logger is already safe for concurrent use, so we don't need to // lock it. w := zapcore.addsync(&lumberjack.logger{ filename: "./foo.log", maxsize: 500, // megabytes maxbackups: 3, maxage: 28, // days }) core := zapcore.newcore( zapcore.newjsonencoder(zap.newproductionencoderconfig()), w, zap.infolevel, ) logger := zap.new(core) logger.info("logger construction succeeded:lumberjack.logger") } func test2() { var cfg zap.config yamlfile, _ := os.readfile("./config_log_zap.yaml") if err := yaml.unmarshal(yamlfile, &cfg); err != nil { panic(err) } logger := zap.must(cfg.build()) defer logger.sync() logger.info("logger construction succeeded:config from yaml") } func main() { test1() test2() }
zap.registersink을 사용하여 lumberjack
로거를 새 싱크로 등록하세요.
그리고 다음과 같이 outputpaths
설정하도록 구성 파일을 수정합니다.
위 내용은 로그 회전을 지원하면서 구성 파일을 사용하여 Logger를 우아하게 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!