|
Boost : |
From: John Torjo (john.lists_at_[hidden])
Date: 2004-10-28 12:52:26
Darren Cook wrote:
> I'm finding an increasing need for an in-file memory log: specifically
> when my program asserts I want to see where it has been.
>
> There are two problems with normal logging, i.e. appending to a disk file:
> * The files get very, very big (I've filled my home partition before)
> * All that writing to disk slows the application down noticeably.
>
> I checked log4cpp and John Torjo's logging library and neither seem to
not yet, but in the near future I want to add cyclic logs (or rotating
logs, if you wish).
Note:
You can use ts_appender() (formely known as ts_write()), and thus the
writing will be on a dedicated thread (I've used this in a real-life
app. - it's *very* fast).
Just for fun, something like:
// assume you've BOOST_DEFINE_LOG(gui,"app.gui") somewhere
add_appender("app.gui", ts_appender(write_to_file("out.txt")) );
// written to file in its own dedicated thread - very fast
BOOST_LOG(gui) << "whatever" << " you " << "want";
But for asserts, this is not useful :(
> offer this, but it seems it could fit as one of the logging targets. I
> had in mind an object that is a wrapper for e.g. a 1Mb char buffer with
> the same interface as std::ostream, so I can just write:
> log_buffer<<"In func1, x="<<x<<", obj="<<obj<<"\n";
>
> And then when my program asserts I can pass log_buffer as a parameter to
> be output (requires it to have operator<< defined):
> SMART_ASSERT(y!=1)(y)(log_buffer);
As a side-note, I'm planning to update the SMART_ASSERT lib in about 3
weeks ;)
At that time, I want to make it interoperate with Boost.Log .
Thus, you should have your failed asserts in no time ;)
However, the fact you want the circular log buffer makes me think that
you have quite a few failed assertions ;)
Anyway, I'll try to improve SMART_ASSERT in the near future.
(now that I think about it, maybe it should use Boost.Log for its
logging completely...)
Best,
John
-- John Torjo, Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- v1.5 - tooltips at your fingertips (work for menus too!) + bitmap buttons (work for MessageBox too!) + tab dialogs, hyper links, lite html
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk