public void HandleLog(string logString, string stackTrace, LogType type)
    {
        if (logString == null)
        {
            logString = "nullString";
        }
        if (stackTrace == null)
        {
            stackTrace = "nullString";
        }
        string logTypeString = type.ToString();
        BTLoggerConfigEntry loggerConfigEntry;

        if (config != null && config.loggerConfig.ContainsKey(logTypeString))
        {
            loggerConfigEntry = config.loggerConfig[logTypeString];
        }
        else
        {
            loggerConfigEntry = new BTLoggerConfigEntry();
        }

        if (!loggerConfigEntry.AnythingToLog())
        {
            return;
        }

        if (config != null && config.logMessageFilter.Any(filter => Regex.IsMatch(logString, filter)))
        {
            return;
        }

        StringBuilder logBuilder = new StringBuilder();

        logBuilder
        .Append("[")
        .Append(logTypeString)
        .Append("]\t[")
        .Append(DateTime.Now.ToString("T"))
        .Append("]");

        if (loggerConfigEntry.logMessage)
        {
            logBuilder
            .Append("\n")
            .Append(logString);
        }

        if (loggerConfigEntry.logStackTrace)
        {
            System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace();
            logBuilder
            .Append("\n")
            .Append(trace.ToString());
        }

        logBuilder.Append("\n");

        using (StreamWriter writer = new StreamWriter((basePath + logFileName).Replace('/', Path.DirectorySeparatorChar), true)){
            writer.WriteLine(logBuilder.ToString());
        }
    }
        private static void HandleLog(string logString, string stackTrace, LogType type)
        {
            if (string.IsNullOrWhiteSpace(logString))
            {
                logString = "nullString";
            }
            if (string.IsNullOrWhiteSpace(stackTrace))
            {
                stackTrace = "nullString";
            }

            string logTypeString = type.ToString();
            BTLoggerConfigEntry loggerConfigEntry;

            if (config != null && config.loggerConfig.ContainsKey(logTypeString))
            {
                loggerConfigEntry = config.loggerConfig[logTypeString];
            }
            else
            {
                loggerConfigEntry = new BTLoggerConfigEntry();
            }

            if (!loggerConfigEntry.AnythingToLog())
            {
                return;
            }
            if (config != null && config.logMessageFilter.Any(filter => Regex.IsMatch(logString, filter)))
            {
                return;
            }

            var logBuilder = new StringBuilder();

            logBuilder
            .Append("[")
            .Append(logTypeString)
            .Append("]\t[")
            .Append(DateTime.Now.ToString("T"))
            .Append("]");

            if (loggerConfigEntry.logMessage)
            {
                logBuilder
                .Append("\n")
                .Append(logString);
            }

            if (loggerConfigEntry.logStackTrace)
            {
                logBuilder.Append("\nProvided Trace: ").Append(stackTrace);
                var trace = new StackTrace();
                logBuilder.Append("\n").Append(trace);
            }

            logBuilder.Append("\n");

            using (var writer = new StreamWriter(logFilePath.Replace('/', Path.DirectorySeparatorChar), true)) {
                writer.WriteLine(logBuilder.ToString());
            }
        }