Как выполнить операцию многократной записи в один файл? - PullRequest
0 голосов
/ 22 ноября 2010

У меня есть сайт в asp.net 2.0, который записывает что-то в файл.Но в то же время, если другой пользователь зашел на этот сайт, он не будет работать до тех пор, пока первая операция над файлом не будет завершена, после того, как вторая сможет работать с файлами.Как справиться с такой ситуацией.

            AppConfiguration appConfiguration = new AppConfiguration();
    string LogFile =String.Empty;
    string sLogFormat =string.Empty;
    string sErrorTime =string.Empty;
    StreamWriter sw=null;
    public LogManager()
    {

        if(!File.Exists(AppConfiguration.LogFilePath))
        {
            Directory.CreateDirectory(AppConfiguration.LogFilePath);
        }

        LogFile = AppConfiguration.LogFilePath+"WAP"+sErrorTime + ".log";
        if(!File.Exists(LogFile))
        {
         File.Create(LogFile);
        }
    }

    public void closeStream()
    {
        if(sw != null)
        {
            sw.Close();
        }
    }

    public void LogException(string className,string methodName, string errorMessage)
    {
        try
        {
            if(!File.Exists(LogFile))
            {
                File.Create(LogFile);
            }

            sw = new StreamWriter(LogFile,true);

            sw.WriteLine(DateTime.Now.ToString() + " | " + className + ":" + methodName + ":"+ errorMessage);
            sw.Flush();
            sw.Close();
        }
        catch(Exception)
        {
            if(sw != null)
            {
                sw.Close();
            }
        }

    }

Ответы [ 2 ]

0 голосов
/ 22 ноября 2010

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

0 голосов
/ 22 ноября 2010

Запись строк в простой текстовый файл испортит его, если несколько пользователей будут обрабатывать его.Скорее, вы можете использовать базу данных для хранения / извлечения текста.Вы даже можете предоставить кнопку где-нибудь для экспорта записей в простой текстовый файл, если это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...