[Qgis-developer] prints to std::cout in qgis

humarco marco.hugentobler at karto.baug.ethz.ch
Mon Apr 3 12:29:20 EDT 2006


Hi Tim,

Right, __LINE__ and __FUNCTION__ are also important.
XML log file would be a good extension.


Regards,
Marco


Am Montag 03 April 2006 17:22 schrieb Tim Sutton:
> Hi Marco
>
> I think it would be interesting to combine the logger functions with
> the unit tests I am planning. So for example a unit test may achieve a
> result but produce critical errors / warnings (Im assuming if its
> fatal, the unit test would fail). With this in mind it would be
> interesting to propoage __FILE__ and __LINE__ into the logs. I was
> also wondering if a simple xml format (or delimited text for xml
> haters) could be produced by the logger e.g.
>
> xml:
>
> <Message file="qgisapp.cpp" line="1232" severity="critical">
>   QGIS has detected a wobble in the earths orbit
> </Message>
>
> or:
>
> File               Line    Severity  Message
> qgisapp.cpp   1232   Critical    QGIS has detected a wobble in the earths
> orbit etc.
>
> My idea is that we could then record stats across the test suite. e.g.
> I run the test suite and  the stats tell give me  a global report:
>
> File | Total Fatal  | Uniqe Fatal | Total Critical | Unique Critical
>
> | Total Warning | Unique Warning
>
> ---------------------------------------------------------------------------
>------------------------------------------------------------ qgisapp   10   
>           6                    5
> 4                10                   10
> ---------------------------------------------------------------------------
>------------------------------------------------------------ all files    
> 100            88                 66
> 22                 99                  22
> ---------------------------------------------------------------------------
>------------------------------------------------------------
>
>
> This would be very useful way of measuring the growth or reduction of
> problems encountered.
>
>
> Regards
>
> Tim
>
> On 4/3/06, nhugent at hispeed.ch <nhugent at hispeed.ch> wrote:
> > Hi qgissers,
> >
> > I will have time to do the implementation of the logger class tomorrow.
> > My suggestion is a header as below. QgsLogger would query the environment
> > variables QGIS_DEBUG and (if set) QGIS_DEBUG_FILE and print out messages
> > or not. The question is how the output should be controled by QGIS_DEBUG.
> > One possibility would be to have QGIS_DEBUG=1 for fatal, QGIS_DEBUG=2 for
> > fatal and critical, QGIS_DEBUG=3 for fatal, critical, warning, etc. If
> > QGIS_DEBUG_FILE is set, only messages from that file will be printed.
> > Else, messages from all files will be printed. What do you think?
> >
> > class QgsLogger
> > {
> > public:
> >  static debug(QString msg, const char* file = 0, const char* function =
> > 0); static debug(QString var, int val, const char* file = 0, const char*
> > function = 0); static debug(QString var, double val, const char* file =
> > 0, const char* function = 0); //goes to qDebug
> >
> >  static warning(QString msg); //goes to qWarning
> >
> >  static critical(QString msg); //goes to qCritical
> >
> >  static fatal(QString msg); //goes to qFatal
> > }
> >
> > Marco
> >
> > >On 3/22/06, Tim Sutton <tim at linfiniti.com> wrote:
> > >> One other idea I could throw into the pot is to have a logger class.
> > >> We could then set it up to write to console, to file or even in the
> > >> future to some part of the gui. The latter could help when we have non
> > >> technical users and windows users who experience problems - we can
> > >> just ask us to send output from the logger window or whathaveyou. Log
> > >> requests could be static methods or we could use qt signals and slots
> > >> and connect the logger to objects being logged when they are
> > >> instantiated. Example invocation mechanisms:
> > >>
> > >> emit logMessage("foo",QgsLogger::Critical);
> > >> emit logMessage("foo",QgsLogger::Informational);
> > >>
> > >> or
> > >>
> > >> QgsLogger::logMessage("foo",QgsLogger::Critical);
> > >> QgsLogger::logMessage("foo",QgsLogger::Informational);
> > >
> > >I prefer the second over emit. But it is too long, I would make it
> > > shorter:
> > >
> > >QgsLog::critical("foo");
> > >QgsLog::info("foo");
> > >QgsLog::debug(1,"foo"); // 1 is level controled by env. var.
> > >
> > >It is also often useful to print variable name - value pairs and
> > >QString::number() is too long, so I would suggest also
> > >
> > >QgsLog::debug(int l, QString var, int val);
> > >QgsLog::debug(int l, QString var, double val);
> > >
> > >Radim
> > >
> > >> Just another thought anyway...
> > >>
> > >> Regards
> > >>
> > >> Tim
> > >
> > >_______________________________________________
> > >Qgis-developer mailing list
> > >Qgis-developer at lists.qgis.org
> > >http://lists.qgis.org/cgi-bin/mailman/listinfo/qgis-developer
> >
> > _______________________________________________
> > Qgis-developer mailing list
> > Qgis-developer at lists.qgis.org
> > http://lists.qgis.org/cgi-bin/mailman/listinfo/qgis-developer
>
> --
> Tim Sutton
>
> Visit http://qgis.org for a great Open Source GIS
> Skype: timlinux
> MSN: tim_bdworld at msn.com
> Yahoo: tim_bdworld at yahoo.com
> Jabber: timlinux
> Irc: timlinux on #qgis at freenode.net
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.qgis.org
> http://lists.qgis.org/cgi-bin/mailman/listinfo/qgis-developer



More information about the Qgis-developer mailing list