SG LOG: Difference between revisions
(Merge from SG_LOG() and cleanup) |
m (→Usage) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 9: | Line 9: | ||
* <code>alert</code> | * <code>alert</code> | ||
* <code>popup</code> | * <code>popup</code> | ||
And <code>class</code> is a white space | And <code>class</code> is a white space seperated list of any (combination) of the following: | ||
* <code>all</code> | * <code>all</code> | ||
* <code>ai</code> | * <code>ai</code> | ||
* <code>enviroment</code> | * <code>enviroment</code> | ||
* <code>flight</code> | * <code>flight</code> | ||
* etc. | * etc. | ||
For a complete list of available classes, see {{simgear file|simgear/debug/debug_types.h}}. | |||
In the C++-code, log output can be generated like this: <code>SG_LOG(SG_INSTR, SG_DEBUG, "Test=" << someVar);</code> and shown with <code>--log-level=debug --log-class=instrumentation</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]]. | 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]]. | ||
== File/line numbers == | |||
Log output will be prefixed with <code><filename>:<line>:</code> if Flightgear is started with command-line option <code>--prop:bool:/sim/log-file-line=true</code>. | |||
Text output from Nasal will be prefixed with <code><nasal-filename>:<line>:</code> if Flightgear is started with command-line option <code>--prop:bool:/sim/nasal-log-file-line=true</code>. | |||
== Log deltas == | |||
On can modify log levels based on the file/function-name/line-number of calls to <code>SG_LOG()</code>, by setting the environmental variable <code>SG_LOG_DELTAS</code> when running Flightgear. | |||
For example one can increase debugging diagnostics from scenery paging code with: | |||
<code>SG_LOG_DELTAS=src/Scenery/SceneryPager.cxx=+3 fgfs.exe ...</code> | |||
Or set to <code>=-5</code> to reduce all diagnostics by 5: | |||
<code>SG_LOG_DELTAS==-5 fgfs.exe ...</code> | |||
For more information see: {{simgear file|simgear/debug/logdelta.hxx}}. | |||
== Related content == | == Related content == | ||
=== Wiki articles === | |||
* [[Command line options#Debugging Options]] | * [[Command line options#Debugging Options]] | ||
* [[Commonly used debugging tools#Console and startup log output]] | |||
=== Source code === | |||
=== Source | |||
* {{simgear file|simgear/debug/logstream.cxx}} | * {{simgear file|simgear/debug/logstream.cxx}} | ||
* {{simgear file|simgear/debug/logstream.hxx}} | * {{simgear file|simgear/debug/logstream.hxx}} |
Latest revision as of 10:52, 30 January 2024
SG_LOG
is a wrapper macro for the SimGear logstream
class. By default, the logstream
class writes all output to the console. SG_LOG
simplifies debugging for core developers who regularly 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 --log-level=[level]
and --log-class=[class]
command line options. Where level
is one of the following:
bulk
debug
info
warn
alert
popup
And class
is a white space seperated list of any (combination) of the following:
all
ai
enviroment
flight
- etc.
For a complete list of available classes, see simgear/simgear/debug/debug_types.h.
In the C++-code, log output can be generated like this: SG_LOG(SG_INSTR, SG_DEBUG, "Test=" << someVar);
and shown with --log-level=debug --log-class=instrumentation
.
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.
File/line numbers
Log output will be prefixed with <filename>:<line>:
if Flightgear is started with command-line option --prop:bool:/sim/log-file-line=true
.
Text output from Nasal will be prefixed with <nasal-filename>:<line>:
if Flightgear is started with command-line option --prop:bool:/sim/nasal-log-file-line=true
.
Log deltas
On can modify log levels based on the file/function-name/line-number of calls to SG_LOG()
, by setting the environmental variable SG_LOG_DELTAS
when running Flightgear.
For example one can increase debugging diagnostics from scenery paging code with:
SG_LOG_DELTAS=src/Scenery/SceneryPager.cxx=+3 fgfs.exe ...
Or set to =-5
to reduce all diagnostics by 5:
SG_LOG_DELTAS==-5 fgfs.exe ...
For more information see: simgear/simgear/debug/logdelta.hxx.