2017-12-11 3 views
0

debian9에서 syslog 백엔드를 사용할 때 부스트 로그를 구성하여 특정 파일로 로그를 보낼 수 있습니까?syslog 싱크를 사용하여 syslog를 특정 파일로 부스트

namespace logging = boost::log; 
namespace sinks = boost::log::sinks; 
namespace keywords = boost::log::keywords; 
using namespace boost::log::sinks::syslog; 

boost::shared_ptr<logging::core> core = logging::core::get(); 

boost::shared_ptr<sinks::syslog_backend> backend = 
    boost::make_shared<sinks::syslog_backend>(
     keywords::use_impl = sinks::syslog::udp_socket_based, 
     keywords::facility = sinks::syslog::local0 
    ); 


// Create and fill in another level translator for "MyLevel" attribute of type string 
sinks::syslog::custom_severity_mapping<std::string> mapping("MyLevel"); 
mapping["debug"] = sinks::syslog::debug; 
mapping["info"] = sinks::syslog::info; 
mapping["warning"] = sinks::syslog::warning; 
mapping["error"] = sinks::syslog::error; 
backend->set_severity_mapper(mapping); 
backend->set_target_address("localhost"); 

// Wrap it into the frontend and register in the core. 
// The backend requires synchronization in the frontend. 
typedef sinks::synchronous_sink<sinks::syslog_backend> sink_t; 
boost::shared_ptr<sink_t> sink(new sink_t(backend)); 

core->add_sink(sink); 

답변

1

시스템 로그 파일 API (및 프로토콜) 응용 프로그램 로그 로그 서버에서 처리하는 방법을 방법을 지정할 수 없습니다 : 다음 코드는 내 로깅 싱크를 초기화합니다. 이를 위해서는 syslog 서버를 구성해야합니다. 서버 관련 문서 (예 : syslog API를 통해 로그하는 경우 rsyslog, syslog-ng 또는 journald)를 참조하십시오.

응용 프로그램에서 대상 파일 이름을 실제로 구성하려면 응용 프로그램에서 파일을 작성해야합니다. text_file_backend 싱크 백엔드가 도움이 될 것입니다.

관련 문제