for Robot Artificial Inteligence

g3log 사용 방법

|

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