From 960935a5bd31b0a325285beb1deb816429c7fe00 Mon Sep 17 00:00:00 2001 From: Andrew Bardsley Date: Thu, 16 Oct 2014 05:49:53 -0400 Subject: base: Reimplement the DPRINTF mechanism in a Logger class This patch adds a Logger class encapsulating dprintf. This allows variants of DPRINTF logging to be constructed and substituted in place of the default behaviour. The Logger provides a logMessage(when, name, format, ...) member function like Trace::dprintf and a getOstream member function to use a raw ostream for logging. A class OstreamLogger is provided which generates the customary debugging output with Trace::OstreamLogger::logMessage being the old Trace::dprintf. --- src/python/swig/trace.i | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/python') diff --git a/src/python/swig/trace.i b/src/python/swig/trace.i index 3b049a3d6..6525b3e51 100644 --- a/src/python/swig/trace.i +++ b/src/python/swig/trace.i @@ -33,17 +33,25 @@ %{ #include "base/trace.hh" #include "base/types.hh" +#include "base/output.hh" inline void output(const char *filename) { - Trace::setOutput(filename); + std::ostream *file_stream = simout.find(filename); + + if (!file_stream) + file_stream = simout.create(filename); + + Trace::setDebugLogger(new Trace::OstreamLogger(*file_stream)); } inline void ignore(const char *expr) { - Trace::ignore.setExpression(expr); + ObjectMatch ignore(expr); + + Trace::getDebugLogger()->setIgnore(ignore); } using Trace::enabled; -- cgit v1.2.3