Esempio n. 1
0
file_logger::file_logger(std::string log_name, std::string log_directory, mlog_bytes max_file_size)
:m_stream(get_next_logfile(log_directory, log_name, max_file_size, &m_offset), BOOST_IOS::app),
m_log_name(std::move(log_name)),
m_log_directory(std::move(log_directory)),
m_max_file_size(std::move(max_file_size)),
m_offset(0)
{
}
Esempio n. 2
0
file_logger::file_logger(std::string log_name, std::string log_directory,
			 mlog_bytes max_file_size)
    : m_flush_immediately(true),
      m_stream(get_next_logfile(log_directory, log_name, max_file_size,
				&m_offset),
	       std::ios::app | std::ios::binary ),
      m_log_name(std::move(log_name)),
      m_log_directory(std::move(log_directory)),
      m_max_file_size(std::move(max_file_size)), m_offset(0) {}
Esempio n. 3
0
void file_logger::write_to_log(const log_metadata& metadata,
				  const std::string& log_text) {

	std::string str = metadata.to_string(log_text);
	m_stream.write(str.c_str(), str.size());
	boost::iostreams::put(m_stream, '\n');
	m_offset += str.size() + 1;
	
	flush();

	if (max_file_size() != 0 && m_offset > max_file_size()) {
		flush();
		m_stream.open(get_next_logfile(m_log_directory, m_log_name,
					       max_file_size(), &m_offset));
	}
}
Esempio n. 4
0
void file_logger::write_to_log(log_metadata&& metadata, std::string&& log_text)
{
	std::string metadata_str = metadata.to_string();
	std::size_t md_len = metadata_str.size();
	std::size_t length = log_text.size() + md_len; 
	char* buffer = new char[length + 1];
	memcpy(buffer, metadata_str.c_str(), md_len); 
	memcpy(&buffer[md_len], log_text.c_str(), log_text.size());
	buffer[length] = '\n';
	m_stream.write(buffer, length + 1);
	delete [] buffer;
	m_offset += length;

	flush();

	if(max_file_size() != 0 && m_offset > max_file_size())
	{
		flush();
		m_stream.open(get_next_logfile(m_log_directory, m_log_name, max_file_size(), &m_offset));
	}
}