2010-11-22 2 views
0

나는 파일에 어떤 것을 쓰는 asp.net 2.0의 웹 사이트를 가지고있다. 그러나 다른 사용자가 해당 사이트를 방문하면 동시에 두 번째 파일을 사용한 작업을 완료 할 때까지 파일의 첫 번째 작업이 완료 될 때까지 작동하지 않습니다. 이러한 상황을 처리하는 방법.수행 방법 단일 파일에서 다중 쓰기 opeartion?

  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(); 
      } 
     } 

    } 
+1

@Sandy; 이 문제가 발생하는 이유는 코드에 따라 다릅니다. 그 중 일부를 우리와 공유 할 수 있습니까? – BeemerGuy

+0

스레드 및 잠금 –

+0

로그 파일을 SQL 데이터베이스의 테이블로 바꾸어야합니다. – SLaks

답변

0

모든 항목에 대해 로그 파일을 열고 닫는 대신 로그 파일을 열어 두는 단일 로깅 프로세스 (예 : syslog 또는 별도의 로깅 스레드)를 고려할 수 있습니다.

-1

일반 텍스트 파일에 줄을 쓰는 것은 여러 사용자가이 파일을 처리 할 때 엉망이됩니다. 오히려 데이터베이스를 사용하여 텍스트를 저장/검색 할 수 있습니다. 필요한 경우 레코드를 일반 텍스트 파일로 내보낼 버튼을 제공 할 수도 있습니다.

+0

OP는 플랫 파일을 사용하기를 원합니다. "데이터베이스 사용하기"라고 말하면서 대답하는 것은 그 질문에 대한 답이 아닙니다. –

+0

이 사용 사례에 대해 데이터베이스가 거의 효율적이지 않다는 사실을 추가하십시오. – Slartibartfast

+0

@rockinthesixstring 수업을 가져 주셔서 감사합니다. 내가 대답을 게시 할 때, Sandy는 플랫 파일 만 사용하기를 원한다고 언급하지 않았습니다. – vamyip

관련 문제