g3log 사용 방법
06 Nov 2021 | Library
g3log는 백그라운드로 돌리면서 log를 취득하는 방법이다. 프리 라이센스로 google에서 만든 glog보다 속도가 더 빠르다고도 한다.
자세한 사용 설명은 아래에 나와 있다.
http://www.yangguanjun.com/2017/10/19/g3log-introduction/
https://awesomeopensource.com/project/KjellKod/g3log
Some Example
An example project integration of g3log, both statially and dynamically built can be found at g3log_example_integration
https://github.com/KjellKod/g3sinks
what is call and wait??
To avoid race conditions(여러 쓰레드에서 동시에 한 instant를 쓰는데 문제가 되는 것) explicit calls to the sink will return a std::future.
Other calls, through the LOG API are more of asynchronous nature
경쟁 조건을 피하기 위해 싱크에 대한 명시적 호출은 std::future를 반환합니다.
LOG API를 통한 다른 호출은 비동기에 가깝습니다.
https://github.com/KjellKod/g3log/blob/master/src/g3log/sinkhandle.hpp
Multi Instance
https://github.com/KjellKod/g3sinks
If you want logging files per function or per module then you would have to write that logging sink yourself.
If you feel that it’s a good contribution, please consider adding it to the community’s contribution of sinks, which can be found at
https://github.com/KjellKod/g3sinks
You can start with an extending sink, either the default here or some at g3sinks. Writing a sink is really simple - see the docs for it
https://www.codeproject.com/Articles/809893/G-log-asynchronous-logging-the-easy-way
주로 보면 좋은 것이 g3sinks/examples/logrotate_main.cpp 이다.
즉 메카니즘은
addsink를 이용해서 하면 된다.
이떄 rotate log(로그 파일 데이터량을 한정하여 여러 파일로 쪼개서 할 수있다.)로 쪼갤 수 있기도 하고 log filter아웃을 이용하여서 따로 저장할 수 있다.
완전 좋은 기능!!!
한번 해보기를 추천한다!
기타 도움되는 지식
Log rotation : 영어에서 번역됨-정보 기술에서 로그 회전은 로그 파일이 너무 오래되거나 너무 크면 압축, 이동, 이름 변경 또는 삭제되는 시스템 관리에 사용되는 자동화된 프로세스입니다. 새로운 수신 로그 데이터는 새로운 새 파일로 전달됩니다.
some hard understand
std::future<std::string> log_file_name = handle->call(&g3::FileSink::fileName);
handle의 File name을 콜해서 log_file_name에 덮어 씌우는 것이다.
std::future는 동기화 결과를 얻을때 사용된다.
g3log는 백그라운드로 돌리면서 log를 취득하는 방법이다. 프리 라이센스로 google에서 만든 glog보다 속도가 더 빠르다고도 한다.
자세한 사용 설명은 아래에 나와 있다.
http://www.yangguanjun.com/2017/10/19/g3log-introduction/
https://awesomeopensource.com/project/KjellKod/g3log
Some Example
An example project integration of g3log, both statially and dynamically built can be found at g3log_example_integration
https://github.com/KjellKod/g3sinks
what is call and wait??
To avoid race conditions(여러 쓰레드에서 동시에 한 instant를 쓰는데 문제가 되는 것) explicit calls to the sink will return a std::future.
Other calls, through the LOG API are more of asynchronous nature
경쟁 조건을 피하기 위해 싱크에 대한 명시적 호출은 std::future를 반환합니다.
LOG API를 통한 다른 호출은 비동기에 가깝습니다.
https://github.com/KjellKod/g3log/blob/master/src/g3log/sinkhandle.hpp
Multi Instance
https://github.com/KjellKod/g3sinks
If you want logging files per function or per module then you would have to write that logging sink yourself.
If you feel that it’s a good contribution, please consider adding it to the community’s contribution of sinks, which can be found at
https://github.com/KjellKod/g3sinks
You can start with an extending sink, either the default here or some at g3sinks. Writing a sink is really simple - see the docs for it
https://www.codeproject.com/Articles/809893/G-log-asynchronous-logging-the-easy-way
주로 보면 좋은 것이 g3sinks/examples/logrotate_main.cpp 이다.
즉 메카니즘은
addsink를 이용해서 하면 된다.
이떄 rotate log(로그 파일 데이터량을 한정하여 여러 파일로 쪼개서 할 수있다.)로 쪼갤 수 있기도 하고 log filter아웃을 이용하여서 따로 저장할 수 있다.
완전 좋은 기능!!!
한번 해보기를 추천한다!
기타 도움되는 지식
Log rotation : 영어에서 번역됨-정보 기술에서 로그 회전은 로그 파일이 너무 오래되거나 너무 크면 압축, 이동, 이름 변경 또는 삭제되는 시스템 관리에 사용되는 자동화된 프로세스입니다. 새로운 수신 로그 데이터는 새로운 새 파일로 전달됩니다.
some hard understand
std::future<std::string> log_file_name = handle->call(&g3::FileSink::fileName);
handle의 File name을 콜해서 log_file_name에 덮어 씌우는 것이다.
std::future는 동기화 결과를 얻을때 사용된다.
Comments