示例#1
0
/// handles requests for LogService
void LogService::operator()(http::request_ptr& http_request_ptr, tcp::connection_ptr& tcp_conn)
{
    // Set Content-type to "text/plain" (plain ascii text)
    http::response_writer_ptr writer(http::response_writer::create(tcp_conn, *http_request_ptr,
                                                                   boost::bind(&tcp::connection::finish, tcp_conn)));
    writer->get_response().set_content_type(http::types::CONTENT_TYPE_TEXT);
    getLogAppender().writeLogEvents(writer);
    writer->send();
}
示例#2
0
int main(int argc, char ** argv)
{
	try
	{
		boost::shared_ptr<fastload::Configuration> configuration;
		try
		{
			configuration = boost::shared_ptr<fastload::Configuration>(new fastload::Configuration(argc, argv));

			log4cpp::Appender * appender(getLogAppender(* configuration));
			log4cpp::Category & log = log4cpp::Category::getInstance("wdb");
			log.addAppender(appender);
			log.setPriority(configuration->logLevel());
		}
		catch ( std::exception & e )
		{
			// Failure to read configuration or set up logging will be written
			// to stderr instead of logs:
			std::clog << e.what() << std::endl;
			return 1;
		}
		log4cpp::Category & log = log4cpp::Category::getInstance("wdb");

		fastload::DataQueue::Ptr rawQue(new fastload::DataQueue(50000, "raw"));
		fastload::DataQueue::Ptr translatedQue(new fastload::DataQueue(1000, "translated"));

		fastload::TranslateJob::Ptr translateJob = fastload::TranslateJob::get(configuration->pqConnect(), configuration->wciUser(), configuration->nameSpace(), rawQue, translatedQue, not configuration->onlyCreateCroups());
		pointer_runner<fastload::TranslateJob> translateRunner(translateJob);
		boost::thread translateThread(translateRunner);

		fastload::old::CopyJob copyJob(configuration->pqConnect(), translatedQue);
		boost::thread copyThread(copyJob);

		try
		{
			for ( std::vector<std::string>::const_iterator it = configuration->file().begin(); it != configuration->file().end(); ++ it )
			{
				if ( * it == "-" )
					copyData(std::cin, * rawQue);
				else
				{
					std::ifstream s(it->c_str());
					if ( ! s.good() )
					{
						log.fatalStream() << "Unable to open file " << * it;
						exit(1);
					}
					copyData(s, * rawQue);
				}
			}
			rawQue->done();
		}
		catch ( std::exception & e )
		{
			// improved error logging
			checkForErrors(* translateJob);
			checkForErrors(copyJob);

			log.fatal(e.what());
			return 1;
		}

		const boost::posix_time::time_duration duration(0,0,1);
		while ( translateJob->status() != fastload::AbstractJob::Done or copyJob.status() != fastload::AbstractJob::Done )
		{
			checkForErrors(* translateJob);
			checkForErrors(copyJob);
			boost::this_thread::sleep(duration);
		}

		log.infoStream() << "COPY " << translatedQue->callsToGet();
	}
	catch ( std::exception & e )
	{
		log4cpp::Category::getInstance("wdb").fatal(e.what());
		return 1;
	}
}