private void LogApiEventToFile(ApiLogEntry logEntry)
 {
     const string logFileName = "ApiLog.json";
     LogObjectToFile(logEntry, logFileName);
 }
        private void LogApiEvent(object sender, LogEventArgs eventArgs)
        {
            ApiLogEntry logEntry = new ApiLogEntry
            {
                DateTime = eventArgs.DateTime,
                Request = eventArgs.Request,
                Response = eventArgs.Response
            };

            ApiContext apiContext = (ApiContext)sender;
            logEntry.CoinName = GetCoinNameForApiContext(apiContext);
            logEntry.Machine = String.Format("{0}:{1}", apiContext.IpAddress, apiContext.Port);

            //make sure BeginInvoke is allowed
            if (Context != null)
            {
                Context.BeginInvoke((Action)(() =>
                {
                    //code to update UI
                    //remove then add so BindingList position is on latest entry
                    while (ApiLogEntries.Count > MaxLogEntriesOnScreen)
                        ApiLogEntries.RemoveAt(0);
                    ApiLogEntries.Add(logEntry);
                }), null);
            }

            LogApiEventToFile(logEntry);
        }