2017-11-21 9 views
0

응용 프로그램에서 Boost 1.63.0 로그 라이브러리를 사용하고 있습니다. 다양한 로그 파일을 초기화하기 위해 구성 INI 파일에서 싱크를 구성하기 위해 boost::log::init_from_stream(...) 메서드를 사용하고 있습니다.boost :: log 구성 파일 변수 사용

원래 부스트 로그의 파일 순환 동작에 문제가있었습니다. 파일이 현재 작업 디렉토리에서 작성되고 파일 회전 트리거 또는 응용 프로그램 닫기의 "대상"디렉토리로 이동되었습니다. 원하는 동작은 파일이 "대상"디렉토리에 직접 작성되는 것입니다. 나는이 게시물의 도움으로 이것을 바로 잡았다 : boost::log add_file_log not writing if app exits with CTRL_CLOSE_EVENT

간단히 말해, "FileName"키워드에 이름 만이 아닌 전체 경로 정보를 제공한다. 이것은 작동하지만 구성 파일을 "정리"하는 좋은 방법이 있는지 궁금합니다.

Target="C:\\ProgramData\\MyApplication\\Logs" 
FileName="C:\\ProgramData\\MyApplication\\Logs\\AppLog_%N.log" 

단지 "대상"을 지정 할 수있는 것이 정말 좋은 것을 : 예를 들어

는 INI 파일은 현재와 같은 모두 "대상"과 "파일 이름"키워드를 지정해야합니다 그런 다음 "FileName"변수 정의에서 해당 변수를 사용하십시오. 이렇게하면 한 가지만 변경하면 이후의 변경 사항을 훨씬 간단하게 만들 수 있습니다. 다음과 같이 입력하십시오 :

#Define Target Directory for file rotation 
Target="C:\\ProgramData\\MyApplication\\Logs" 

#Define File Name pattern 
FileName="%Target%\\AppLog_%N.log" 
    --- OR --- 
FileName="$(Target)\\AppLog_%N.log" 

이 작업을 수행 할 수 있습니까?

답변

1

Boost.Log는 변수 확장을 수행하지 않으므로 직접 수행해야합니다. parse_settings으로 전화하여 설정 파일을 settings에로드 할 수 있습니다. 그런 다음 해당 컨테이너에서 작업하고 변수를 확장 할 수 있습니다. 완료되면 init_from_settings을 호출하여 로깅 라이브러리를 초기화 할 수 있습니다.