Hi All,

The whole continue-running-if-possible was done somewhat on purpose under the 
motivation that a somewhat wrong picture is better than a crash or abort (which 
would happen for exceptions).

Marcus Lindblom wrote:
> 
> For other libs, Boost had a log library for review a few months ago but 
> it didn't pass. The best I could find was this comparison: 
> http://log4cpp.hora-obscura.de/index.php/LoggingLibraryForCpp. I haven't 
> looked at anyone of these too closely.

Some of the features look a little overkill for our case (telnet appender? :). 
Our goal with the OpenSG logging was to keep it small and simple. It's gotten a 
little bigger than expected, and not of its features have been used/realized 
(module-based logging being my primary gripe), but it has worked farily well so 
far.

> Have exception throwing optional is probably the best solution. A 
> user-callback for errors would solve this easily, as it would allow 
> anyone to throw an exception back through OpenSG code and get a proper 
> call-stack. (or just log it, or terminate the application, or send an 
> e-maill, or make some toast, or ... :)

Hm, I don't know a user callback would be equivalent to exception throwing, as 
the user callback would have to have a way to identify what kind of exception 
to 
throw. Being able to have different kinds and catching only certain kinds is 
one 
of the big advantages of exceptions.

> So, in theory, we could detect whether OpenSG logs any errors/fatals and 
> do something from the log-callback, but:
>  - Some real (IMO) errors are reported only as warnings.

My logic in assigning levels was:

FATAL: the program will likely crash if you continue
WARNING: the program will not do what you want, but it will not crash
NOTICE: something hapenned that you should know about, but the program will do 
what you expected
INFO: something you might want to know about if you're curious
DEBUG: something you need to know if you're hunting bugs

DEBUGs are completely compiled out in release libs, i.e. zero overhead, which 
is 
something that was important to me.

>  - A log-ouput isn't as clear in the code as a 'onError()' call.
>      - It could be hard to identify exactly where the error is (since 
> the log is just a bunch of lines)

True.

>      - It's potentially unsafe to throw an exception from the log 
> (resource leaks, unfinished log message, etc.)

Absolutely. From what I understand that's the main gripe with expcetions, it's 
nearly impossible to ensure no resource leaks. How much of a problem that is in 
practice I don't know, I haven't used exceptions productively.

>  - The logging is just text-line based. (Just level & message, not very 
> structured info.)

What other info would you be interested in? Do you have an example of what you 
were thinking of?

> The easiest way would probably be to fix the first thing, as it would 
> solve the immediate problem.
> 
>  For the other two:
>  - Add osgError() / osgFatalError() functions with user callbacks? 

You mean instead of the existing log callbacks or in addition to them?

>  - Add more info (__FUNC__, __LINE__, type?, node/core-ptr?, 
> attachment-object-name?, ip?, action-node-stack?)

__FUNC__ and __LINE__ I can see easily, the rest I'm not sure how to make it 
generic.

> Also, for exception safety, there are some manual new/delete's here and 
> there that needs replacing with std::auto_ptr or boost::scoped_ptr, but 
> that's a minor issue.

True.

        Dirk

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to