2011-09-29 4 views
1

저는 행복하게 XP 컴퓨터에서 WPF 프로그램과 함께 log4net을 사용했으며 행복하게 fileAppender FileAppender를 사용하여 로그 메시지를 c : \ log.txt에 기록했습니다. 모든게 괜찮 았어. 그러나 Windows 7 컴퓨터에서는 작동하지 않습니다. 오류가 없거나 아무것도 작성되지 않았으며 파일이 작성되지 않았으며 로그온이 훨씬 적습니다. 약간의 연구 결과에 따르면 Windows 7의 파일 사용 권한 문제 (UAC)이며 사실 관리자 권한으로 실행 파일을 실행하면 작동합니다. (관리자로 로그온 했음에도 불구하고) 클릭 만하면 작동하지 않으며 Visual Studio에서 시작할 때 작동하지 않습니다.파일에 log4net 쓰기. 권한을 여는 방법

질문 :1. 누군가가 하나의 파일 (C : \ log.txt)에 쓰기 권한을 요청하는 예제를 가리킬 수 있습니까? app.config가 전체 프로그램이 관리자 권한으로 실행되도록 요청하는 구성의 예제를 보았습니다. 이것은 잔인한 것 같지만 그것이 효과가있을 것 같아요. 2. 정보를 로그 파일로 보내는 더 좋은 방법이 있습니까? 결국 C :는 사용자 컴퓨터에 존재하지 않습니다. 필자는 Windows 7에서 "사용자 파티션"이라는 개념을 생각해 냈지만 XP와 Vista에서 어떤 작업을해야만하는지 알 수 있습니다.

감사 톤, 데이브

답변

5

루트 폴더에 직접 쓰지 마십시오. Windows 7에서는 관리자 권한으로 실행하거나 UAC를 사용하지 않도록 설정해야하며 권장되지 않습니다. 당신이 로그를 구성하는 .config 파일을 사용하는 경우

대신 당신은

<file value="${ALLUSERSPROFILE}\CompanyName\ProductName\Log.txt" /> 

또는

같은 것을 사용할 수 있으며, '응용 프로그램 데이터'영역

의 폴더에 쓸 수 있습니다

<file value="${APPDATA}\CompanyName\ProductName\Log.txt" /> 

로그 파일을 특정 사용자에게 표시할지 여부에 따라 다릅니다.

(분명히 CompanyName과 ProductName을 자신의 세부 정보로 바꿉니다).

이것은 XP/Vista/W7에서 작동합니다.

+0

대단히 감사합니다. 후속 조치를 요청할 수 있습니까? .config 파일을 여러 프로젝트에 공유하고 있습니다. 파일을 솔루션, 프로젝트 또는 어셈블리 이름 아래에 넣고 싶습니다. 나는 시도했다 : <파일 값 = "$ {ALLUSERSPROFILE} \ MyCompany \ $ AssemblyName $ \ rollinglogfile.txt"/>하지만 작동하지 않습니다. 이 작업을 수행하기 위해 $ Solution 또는 $ Project와 같은 매크로가있을 것입니다. 내가 방금 저 아래에 저장 한 것은 ...\ $ AssemblyName $ – Dave

+0

또한 수백만 명의 뷰어를 위해 :) 나중에 누가 보는지 XP는 Documents and Settings \ CompanyName ... 파일에 저장하지만 Windows 7은 C : \ Users \ All Users \ MyCompany \ $ AssemblyName $ 이것은 간단히 나를 혼란스럽게 만들었습니다. – Dave

+0

가장 가까운 것이 아마 보통 % exdom의 이름이 될 appdomain 일 것입니다. 전체 목록은 http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html을 참조하십시오. – sgmoore

0

당신은 내 눈에 3 가지 옵션이 있습니다 : 훌륭한 해결책이 아닙니다 그게 전부 입력해도 관리자로 응용 프로그램을 실행 항상 언급 같은

  1. 사용 귀하의 로그를 저장하는 실행 응용 프로그램의 로컬 경로 - 나는 항상 내 로그가 어디에 있는지 알고 있으므로이 방법을 선호합니다 (AppDomain.CurrentDomain.BaseDirectory가 도움이 될 것입니다)

  2. ,
  3. 사용 "내 문서"또는 이와 유사한 특수 폴더 - 빠른 구글이 우리에게주는이 : special folders

난이 도움이되기를 바랍니다.