15 Nisan 2017 Cumartesi

log sinks text_file_backend Sınıfı

Giriş
add_file_log metodu bizim için bu sınıfı otomatik yaratır.

Constructor
Şöyle yaparız.
boost::shared_ptr< sinks::text_file_backend > pBackend =
  boost::make_shared< sinks::text_file_backend >(...);
auto_flush parametresi
Açıklaması şöyle. Bu parametre sink ile ilgili backend ile ilgili değil deniyor. Ancak o zaman niçin backend sınıfına ait bir şey ben de anlamadım.
First, auto_flush makes the sink flush its buffers after each log record is written, whether or not it contains a newline. Second, auto_flush can only be enabled or disabled on per-sink basis. In the particular case of text_ostream_backend it means either all streams attached to the sink will be flushed, or none of them.
Şöyle yaparız.
keywords::auto_flush = false
file_name parametresi
"file_name" kullanılacak örüntüyü belirtir. Dosya kapatılınca bir collector'a verilir. collector eğer gerekiyorsa dosya ile bir işlem yapar. Daha sonra örüntüye göre yeni bir dosya açılır.
%Y - year
%m - month
%d - day
%N - number
içindir.

Şöyle yaparız.
logging::keywords::file_name = "file_%5N.log"
Şöyle yaparız.
".report.log.%Y_%m_%d.%N.log"
rotation_size parametresi
Tek bir dosyanın olması gerekn büyüklüğünü belirtir. Şöyle yaparız.
logging::keywords::rotation_size = 5 * 1024 * 1024
time_based_rotation parametresi
Şöyle yaparız.
logging::keywords::time_based_rotation =
  sinks::file::rotation_at_time_point(12, 0, 0)
Şöyle yaparız.
keywords::time_based_rotation =
  sinks::file::rotation_at_time_point(0, 0, 0)
scan_for_files metodu
Şöyle yaparız.
pBackend->scan_for_files ();
set_file_collector metodu
Toplam dosya boyutu belli bir büyüklüğe gelince eski dosyaları siler. Şöyle yaparız.
boost::shared_ptr<sinks::file::collector> pReportCollector = ...;
pBackend->set_file_collector (pReportCollector);
Şöyle yaparız.
sink->locked_backend()->set_file_collector(sinks::file::make_collector(
  keywords::target = m_dirLocation,
  keywords::max_size = 1 * 1024));
Şöyle yaparız.
sink->locked_backend()->set_file_collector(sinks::file::make_collector(
  keywords::target = "/var/log/testApp/oldLogs",
  keywords::max_size = 5 * 1024 * 1024 * 2,
  keywords::min_free_space = 5 * 1024 * 1024 * 2,
  keywords::max_files = 2));



Hiç yorum yok:

Yorum Gönder