# Logging

If you run into issues when using Simplygon you should always check the log for clues.
You can access the log in following ways:

# Log to stdout

If you want to get the log from stdout you should enable logging as soon as you initialize the Simplygon interface.

// Enable logging, will default to stdout
sg->SetGlobalEnableLogSetting( true );

// Run processing here...

# Log to file

If you want to get the log from a file you should enable logging as soon as you initialize the Simplygon interface.

// Enable logging and send the log to the default file (%SIMPLYGON_9_SHARED\Simplygon.log%)
sg->EnableLogToFile( Simplygon::ELogLevel::Info, Simplygon::ELogDecoration::Timestamp |
                                                 Simplygon::ELogDecoration::Thread | 
                                                 Simplygon::ELogDecoration::Category );

// Run processing here...
// Enable logging and send the log to a specified file
sg->EnableLogToFile( Simplygon::ELogLevel::Info, Simplygon::ELogDecoration::Timestamp |
                                                 Simplygon::ELogDecoration::Thread | 
                                                 Simplygon::ELogDecoration::Category,
                                                 "C:\\temp\\Simplygon.log" );

// Run processing here...

# Errors and Warnings

If you want to access errors and warnings from the log directly in code you can use the following code.

// Run processing here...

// Check if an error occurred
if ( sg->ErrorOccurred() ) 
{
    // Get all errors occured in processing
    auto errors = sg->CreateStringArray();
    sg->GetErrorMessages( errors );
}

// Check if a warning occurred
if ( sg->WarningOccurred() )
{
    // Get all warnings occured in the processing
    auto warnings = sg->CreateStringArray();
    sg->GetWarningMessages( warnings );
}