Boost logo

Boost :

From: John Torjo (john.groups_at_[hidden])
Date: 2008-02-07 16:26:33

Hi Phil,
> Dear All,
> I've decided to port one of my apps to the proposed logging library so
> that I can write a review. A couple of issues have come up immediately:
> - This program currently logs using syslog. I was expecting to find a
> back-end for this logging library for syslog, since it is the standard
> logging mechanism on POSIX. But I can't see anything. Am I missing
> something, or is it really not there?
At this time I don't have syslog support - but it should be easy to add.
I'm a Windows kind of guy, even though I tested my lib on Linux as well.
> - I spent a while trying to work out how to compile the library. I
> have now come to the conclusion that it is header-only, and that it's
> only the tests and the examples (called "scenarios") that you might
> want to compile by following the instructions in the documentation. Is
> this right?
Yes, it is header-only.
> From what I can see so far, using this library is not going to be a
> compelling alternative to the concise
> #include <syslog.h>
> syslog(LOG_WARN,"Blob %d failed to %s",n,x);
Why not? If you say that writing to syslog is that easy, then adding a
formater class for syslog should be as easy as what I've just attached.
It should work out of the box, but I haven't tested it. Please let me
know if it works.

I've looked here:
Does it handle Unicode (it doesn't seem to)?

To add this as a destination, you should call something similar, on your
    g_l()->writer().add_destination( destination::syslog_no_levels() );

- it does NOT care about levels
- at this time, it logs everything as LOG_INFO
- to care about levels, it's a bit more complicated - I'll post another
email in about 10-15 minutes.


-- -- C++ expert
... call me only if you want things done right

// destination/syslog_no_levels.hpp

// Boost Logging library
// Author: John Torjo,
// Copyright (C) 2007 John Torjo (see for email)
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// See for updates, documentation, and revision history.
// See for more details

#ifndef JT28092007_destination_syslog_no_levels_HPP_DEFINED
#define JT28092007_destination_syslog_no_levels_HPP_DEFINED

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
# pragma once

#include <boost/logging/detail/fwd.hpp>
#include <boost/logging/detail/manipulator.hpp>
#include <boost/logging/format/destination/convert_destination.hpp>
#include <boost/logging/format/destination/file.hpp>
#include <syslog.h>

namespace boost { namespace logging { namespace destination {

    @brief Writes the string to syslog_no_levels. Note: does not care about levels - always logs as LOG_INFO
template<class convert_dest = do_convert_destination > struct syslog_no_levels_t : is_generic, boost::logging::op_equal::always_equal {

    template<class msg_type> void operator()(const msg_type & msg) const {
        syslog( LOG_INFO, msg.c_str() );

/** @brief syslog_no_levels_t with default values. See syslog_no_levels_t

@copydoc syslog_no_levels_t
typedef syslog_no_levels_t<> syslog_no_levels;



Boost list run by bdawes at, gregod at, cpdaniel at, john at