Log classify. There are 5 kinds of log can be chosen. They are DEBUG, INFO, WARNING, ERROR, FATAL low-to-high. If you print a high class log, it will be print in the lower logs at the same time.
The different log message will be written in different files.
Asynchronous write. The messages will be put in a channel first, one other thread will get it from the channel and write to the file.
Full write. If there are still some messages in the channel while the main thread is over, the CloseLogger function will ensure the messages can be written to the file before the program exit.
Separate file. Configure the config object, set SeparateFileByDate as true, the files will be separated by date like '2017-1-7_DEBUG.log, 2017-1-8_DEBUG.log' etc.w