fiona-j-w / simple_logger Goto Github PK
View Code? Open in Web Editor NEWA simple, easily reviewable logging library
A simple, easily reviewable logging library
It would be nice to be able to set more than one active output of the logger at any given time.
logger::set_stream(0, std::out);
logger::note("Only to std::out at this time");
logger::set_stream(1, "/dev/tty1");
logger::note("To std::out and /dev/tty1 for this message");
logger::reset_stream(1);
logger::note("Visible on std::out only again.");
logger::reset_stream(0);
logger::warning("Visible nowhere near you!");
Number of channels should be flexible, low number expected, set_stream on stream already present, closes previous stream on that channel.
Management of streams allocated by user is duty of user; streams opened by the logger interface should be handled there. Providing explicit deleter parameter when setting up a stream called when it is closed is desirable and should use sane default implementation.
The current unittests don't jet check filtering the messages. (The previously tested functionality still gets tested though.)
The unit test should be refactored to move the final check of the produced output out into a macro/inline function producing much more concise result check code.
e.g.:
const foo = std::string("string1");
const bar = std::string("string2");
BOOST_CHECK(std::equal(foo.begin(), foo.end(), result.begin()));
BOOST_CHECK(std::equal(bar.rbegin(), bar.rend(), result.rbegin()));
should be simplified to something along the lines of:
LOG_CHECK(result, "string1", "string2");
The stored reference for the stream used for the output should be aware of when the object/instance it refers to goes out of scope. The current unit test implementation would suffer this dead reference issue if the proper (re-)initialization of the stream was forgotten in even one of the tests.
The current construction is somewhat dangerous ;-)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.