This is probably the issue:
Trace.Listeners.Add(new TextWriterTraceListener(swLog));
Every time you add a log entry, you're adding an extra trace listener... so the first time, you'll get one log entry. The second time, you'll get two (new) log entries, etc. You should be able to see this in your log (although as you're adding a listener and then disposing of the writer, it's not really clear what will happen).
It's not clear why you're using Trace.WriteLine
at all given that you know exactly what you're trying to write to - why not just use swLog.WriteLine(...)
?
Also, I'd encourage you to use string.Format
instead of all that repeated string concatenation... and ideally use a dedicated logging framework (e.g. NLog or log4Net) instead.