public ILoggerParams CreateParams()
        {
            var result = new FileLoggerParams();

            result.Parameters.Add("LogFolder", null);
            result.Parameters.Add("NameTemplate", null);

            return(result);
        }
        public void Init(ILoggerParams loggerParams)
        {
            FileLoggerParams flParams = loggerParams as FileLoggerParams;

            if (flParams != null)
            {
                // reading parameters
                string folder   = flParams.Parameters["LogFolder"].ToString();
                string template = flParams.Parameters["NameTemplate"].ToString();
                _bufferSize = flParams.Parameters.ContainsKey("BufferSize") ? Int32.Parse(flParams.Parameters["BufferSize"].ToString()) : 100;

                string fileName = string.Format(template, DateTime.UtcNow.ToString("dd-MM-yyyy HH-mm-ss"));

                _filePath = Path.Combine(folder, fileName);

                _flushTask        = new Task(FlushThread);
                _isFlushThreadRun = true;
                _flushTask.Start();
            }
            else
            {
                throw new ArgumentException(string.Format("Invalid parameters provided: unexpected type '{0}'", loggerParams.GetType().ToString()));
            }
        }