2015-03-24 4 views
-1

Я пишу файл журнала, и у него всегда есть повторяющаяся строка (по-моему, перезагрузка страницы).Как удалить повторяющиеся строки, написанные перезагрузкой страницы?

userName searched for: 'assembly' at: 3/24/2015 7:32:42 AM 
userName searched for: 'assembly' at: 3/24/2015 7:32:43 AM 

Вот мой код для записи файла:

using (StreamWriter streamWriter = File.AppendText(Server.MapPath("~/searchlog.txt"))) 
{ 
    streamWriter.WriteLine(userRecord.name + " searched for: \'" + ProcessInputClause + "\' at: " + DateTime.UtcNow); 
} 

Что бы хороший способ избавиться от этого? Я имею в виду использование:

var lines = System.IO.File.ReadAllLines("..."); 
System.IO.File.WriteAllLines("...", lines.Take(lines.Length - 1).ToArray()); 

Но это не похоже на работу ...

+0

PageLoad? Вы имеете в виду обратный вызов страницы ASP.NET, вызванный кодом на стороне сервера? Как насчет того, чтобы предотвратить его с помощью page.IsPostBack? – Steve

+0

@ Считайте мои мысли точно. Однако не результат поиска в результате обратной передачи? –

+0

Умм ... это не выглядит поточно-безопасным. Как синхронизировать регистрацию? – Luaan

ответ

4

Вы не должны удалить все записи из журнала. Вам нужно точно знать, что происходит в приложении, чтобы воспроизводить ошибки приложений. Удаление строки из журнала может скрыть что-то очень важное.

В случае необходимости удалить некоторое дублирование из журнала, чем есть, вероятно, некоторый запах дизайна.

+0

Этот журнал предназначен только для записи какого типа пользователя в определенном окне, а дубликат для каждой строки длинной записи выглядит довольно уродливым. Повторная загрузка страницы, я спросил здесь один раз, они сказали, что это нормально. – user1314404

+1

, чем вы должны регистрировать метод публикации, например. В случае, если два пользователя найдут что-то, вы можете легко удалить одну запись журнала пользователя с помощью своего подхода. – Aik

+0

Хорошая точка! так что это не так просто решить, как кажется. – user1314404

0

Вы можете попробовать это:

var previoustext = new HashSet<string>(); 
File.WriteAllLines(destinationFile, File.ReadLines(sourceFile) 
             .Where(line => previoustext.Add(line))); 
0

Вы должны изменить место вы пишете свой журнал, так как некоторые модули страницы могут назвать ваш сценарий несколько раз при загрузке одной страницы.

Я бы не стал регистрировать записи поиска, что бы я делал, это вставить в базу данных запись, которую искали, в какое время и другую информацию вам нужно, так что еще проще сделать отчеты или статистику поисков на вашем сайте ,