2
0
mirror of https://github.com/boostorg/asio.git synced 2026-01-28 06:42:08 +00:00
Files
asio/example/services/basic_logger.hpp
Christopher Kohlhoff bb38d425fb Merge from trunk:
* Chrono support.

* Added object_handle support.

* Need to enable the basic_handle class when object_handle is supported.

* Update copyright notices.

* Fix MSVC "performance warning".

* Fix for NetBSD. Fixes #6098.

* Fix regression in buffered_write_stream. Fixes #6310.

* Fix deadlock on Mac OS X. Fixes #6275.

* On linux, connect can return EAGAIN in certain circumstances. Remap to another
  error so that it doesn't look like a non-blocking operation. Fixes #6048.

* Fix non-paged pool "leak" on Windows when io_service is repeatedly run without anything to do. Fixes #6321.

* Disable object_handle on Windows CE.

* Add extra include required for OVERLAPPED struct.

* Fix doxygen comments.

* Update documentation.

* Add missing class.

* Update copyright year.


[SVN r76516]
2012-01-15 13:46:25 +00:00

84 lines
1.9 KiB
C++

//
// basic_logger.hpp
// ~~~~~~~~~~~~~~~~
//
// Copyright (c) 2003-2012 Christopher M. Kohlhoff (chris at kohlhoff dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#ifndef SERVICES_BASIC_LOGGER_HPP
#define SERVICES_BASIC_LOGGER_HPP
#include <boost/asio.hpp>
#include <boost/noncopyable.hpp>
#include <string>
namespace services {
/// Class to provide simple logging functionality. Use the services::logger
/// typedef.
template <typename Service>
class basic_logger
: private boost::noncopyable
{
public:
/// The type of the service that will be used to provide timer operations.
typedef Service service_type;
/// The native implementation type of the timer.
typedef typename service_type::impl_type impl_type;
/// Constructor.
/**
* This constructor creates a logger.
*
* @param io_service The io_service object used to locate the logger service.
*
* @param identifier An identifier for this logger.
*/
explicit basic_logger(boost::asio::io_service& io_service,
const std::string& identifier)
: service_(boost::asio::use_service<Service>(io_service)),
impl_(service_.null())
{
service_.create(impl_, identifier);
}
/// Destructor.
~basic_logger()
{
service_.destroy(impl_);
}
/// Get the io_service associated with the object.
boost::asio::io_service& get_io_service()
{
return service_.get_io_service();
}
/// Set the output file for all logger instances.
void use_file(const std::string& file)
{
service_.use_file(impl_, file);
}
/// Log a message.
void log(const std::string& message)
{
service_.log(impl_, message);
}
private:
/// The backend service implementation.
service_type& service_;
/// The underlying native implementation.
impl_type impl_;
};
} // namespace services
#endif // SERVICES_BASIC_LOGGER_HPP