SG LOG: Difference between revisions

1,318 bytes removed ,  9 April 2019
Merge from SG_LOG() and cleanup
No edit summary
(Merge from SG_LOG() and cleanup)
Line 1: Line 1:
{{merge|SG_LOG()}}
<code>SG_LOG</code> is a wrapper macro for the [[SimGear]] <code>logstream</code> class.  By default, the <code>logstream</code> class writes all output to the [[console]].  <code>SG_LOG</code> simplifies debugging for core developers who regularly [[Building FlightGear|compile from source]].  It allows you to easily associate your debug messages with a "channel" and with a "priority". This mechanism allows users to explicitly enable to certain log messages, while ignoring others. This can be helpful in order to troubleshoot certain problems.


<code>SG_LOG</code> is a wrapper macro for the [[SimGear]] <code>logstream</code> class.  By default, the <code>logstream</code> class writes all output to the console.  <code>SG_LOG</code> simplifies debugging for core developers who regularly [[Building FlightGear|compile from source]].  It allows you to easily associate your debug messages with a "channel" and with a "priority". This mechanism allows users to explicitly enable to certain log messages, while ignoring others. This can be helpful in order to troubleshoot certain problems.
== Usage ==
Logging settings can be modified using the <code>--log-level=[level]</code> and <code>--log-class=[class]</code> [[command line]] options. Where <code>level</code> is one of the following:
* <code>bulk</code>
* <code>debug</code>
* <code>info</code>
* <code>warn</code>
* <code>alert</code>
* <code>popup</code>
And <code>class</code> is a white space seperate list of any (combination) of the following:
* <code>all</code>
* <code>ai</code>
* <code>enviroment</code>
* <code>flight</code>
* etc. See {{simgear file|simgear/debug/debug_types.h}} for the complete list of available classes.


Logging settings can be modified using the <code>--log-level=[level]</code> [[command line]] option, detailed help about most available command line options can be obtained from the fgfs executable by calling it with the following arguments: <code>--help --verbose</code>.
If you are interested in simply logging certain properties to a file at runtime, you can use either FlightGear's built-in [[Logging properties|logging framework]], or the [[generic protocol]].
 
<pre>
--log-level={bulk,debug,info,warn,alert}
                                Specify which logging level to use
 
--log-class=[ai,environment,flight,general,io,network,sound,terrain,...]
                                Specify which logging class(es) to use
 
</pre>
 
If you are interested in simply logging certain properties to a file at runtime, you can use either FlightGear's built-in logging framework, or the [[generic protocol]]. See [[Logging properties]] and [[Generic protocol]] for more details.
 
{{FGCquote
  |The standard mechanism for making FlightGear "log" stuff to the console (or log file) is using the SG_LOG() macro
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=233211#p233211
    |title=<nowiki>Re: 3.4 and the pain begins ...</nowiki>
    |author=<nowiki>Hooray</nowiki>
    |date=<nowiki>Thu Feb 26</nowiki>
  }}
}}
 
== Development ==
{{FGCquote
  |'m working a bit on reworking the logging exposed to Nasal, since it hasn't been updated in years (besides the addition of the never-used logprint() by James, the old printlog() only goes to the $FG_HOME/fgfs.log file if it would also go to the console and is implemented in globals.nas - aka can't be depended on in $FG_ROOT/Nasal/*.nas). This is going to eventually help with the Nasal REPL (aka to capture output), but I discovered something really weird: sglog().would_log() returns true for any priority &gt;{{=}} INFO! This almost seems like a bug to me, but OTOH it is required by the SG_LOG() macro to ensure that the logging file is not ignored in the if statement (since SG_LOG() uses would_log()).
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=202850#p202850
    |title=<nowiki>sglog().would_log()</nowiki>
    |author=<nowiki>Philosopher</nowiki>
    |date=<nowiki>Fri Mar 07</nowiki>
  }}
}}


== Related content ==
== Related content ==
=== Wiki articles ===
* [[Command line options#Debugging Options]]
* [[Command line options#Debugging Options]]


== External links ==
=== Source files ===
=== Source files ===
* {{simgear file|simgear/debug/logstream.cxx}}
* {{simgear file|simgear/debug/logstream.cxx}}