My application is not cleaning up properly - it leaves the process behind in task manager after exiting.
I read about this below, but I'm setting all sinks from a configuration file.

Can the shutdown documented in link below be done from the config file? If so, what are the options? I am using multi-threaded loggers.

Thanks in advance.

c++ - How to stop all asynchronous sinks when using Boost.Log - Stack Overflow

Snippet of code referenced in link above:


               // Remove the sink from the core, so that no records are passed to it
              core->remove_sink(sink);

      // Break the feeding loop
      sink->stop();

      // Flush all log records that may have left buffered
      sink->flush();

      sink.reset();

Snippet of my config file:
# Logging core settings section. May be omitted if no parameters specified within it.
[Core]
# <DisableLogging> true=disable all logging; false=enable all logging Q. do we care to disable specific channels?
DisableLogging=false

# Sink settings sections
#GTSMAIN logs everything to a text file
[Sinks.GTSMAIN]
Destination="TextFile"

#<Asynchronous> if true, a thread is dedicated to writing to log, otherwise blocks main thread to write.
Asynchronous="true"

# Enables automatic stream flush after each log record.
AutoFlush="true"

# Formatter string. Optional, by default only log record message text is written.
Format="[%TimeStamp%][%ThreadID%][%Severity%][%Channel%] %Message%"

#Target specifies where to save files when rotation occurrs
Target="C:/Temp/GtsLogs"
FileName="gtsMainLog_%3N.log"
#RotationSize in bytes
RotationSize="1048576"
#MaxSize - oldest file in the target directory will be deleted when Maxsize(in bytes) is reached
MaxSize=100485760
OpenMode="append"
#Apply no filter for the main log
# Sink-specific filter. Optional, by default no filter is applied.
#============================================================================================================
[Sinks.ADM]
Destination="TextFile"
#
#<Asynchronous> if true, a thread is dedicated to writing to log, otherwise blocks main thread to write.
Asynchronous="true"
#
## Enables automatic stream flush after each log record.
AutoFlush="true"
#
## Formatter string. Optional, by default only log record message text is written.
Format="[%TimeStamp%][%ThreadID%][%Severity%][%Channel%] %Message%"
#
Target="C:/Temp/GtsLogs"
FileName="gtsAdm_%3N.log"
##RotationSize in bytes
RotationSize="1048576"
##MaxSize - oldest file in the target directory will be deleted when Maxsize(in bytes) is reached
MaxSize=100485760
##Apply no filter for the main log
## Sink-specific filter - anything in AGR channel. Optional, by default no filter is applied.
Filter="%Channel% matches \"ADM\""
##============================================================================================================
[Sinks.AGR]
Destination="TextFile"
#
##<Asynchronous> if true, a thread is dedicated to writing to log, otherwise blocks main thread to write.
Asynchronous="true"
#
## Enables automatic stream flush after each log record.
AutoFlush="true"
#
## Formatter string. Optional, by default only log record message text is written.
Format="[%TimeStamp%][%ThreadID%][%Severity%][%Channel%] %Message%"
#
Target="C:/Temp/GtsLogs"
FileName="gtsAgr_%3N.log"
##RotationSize in bytes
RotationSize="1048576"
##MaxSize - oldest file in the target directory will be deleted when Maxsize(in bytes) is reached
MaxSize=100485760
## Sink-specific filter - anything in AGR channel. Optional, by default no filter is applied.
Filter="%Channel% matches \"AGR\""