log4net을 사용하는 WPF 앱이 있습니다. Visual Studio에서 실행할 때 로그 파일은 Debug 또는 Release 폴더에 예상대로 만들어집니다.앱을 배포 할 때 log4net 로그 파일이 작성되지 않습니다.
그러나 설치 프로그램을 만들고 설치된 응용 프로그램을 실행하면 로그 파일이 만들어지지 않습니다. 코드에 다음 줄을 추가했습니다 ...
string logFilePath = ((Hierarchy)LogManager.GetRepository())
.Root.Appenders.OfType<FileAppender>()
.FirstOrDefault()?.File;
using (StreamWriter sw = new StreamWriter(@"d:\log.log")) {
sw.WriteLine("Log file: " + logFilePath);
}
... 내가 예상 한 위치에 로그 파일이 기록되고 있는지 확인할 수 있습니다. 로그 파일이 내가 예상했던대로 C:\Program Files (x86)\Physio Diary\PhysioDiaryClient.log
에 기록되어 있다고 알려졌습니다.
그러나 파일이 없습니다. 왜 그런가? 여기
사이에<?xml version="1.0"
encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />
</configSections>
<log4net>
<appender name="RollingFileAppender"
type="log4net.Appender.RollingFileAppender">
<param name="File"
value="PhysioDiaryClient.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-7level %logger - %message%newline%exception" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
파일의 바닥과 같다 ...
<startup>
<supportedRuntime version="v4.0"
sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
비트가 모두 수행한다 .. app.config 파일의 선두입니다 앱이 사용하는 WCF 서비스와
누구나 아이디어가 있으십니까?
편집 : 테스트로서, 나는 내 D에 대한 App.config에서 로그 파일 경로를 하드 코딩 시도 : 드라이브 (이 하드 코딩 없습니다 및 권한 문제의 의심 때문에)하지만 파일 여전히 만들어지지 않았습니다.
일반적으로 말하는 응용 프로그램이 해당 디렉토리에 쓸 수 없기 때문에 % ProgramFiles % 디렉토리를 로깅 대상으로 구성하면 안됩니다. – dymanoid
@dymanoid 이상적으로, 사용자의 로컬 폴더에있는 고객 폴더에 로그 파일을 작성하고 싶습니다. 내가 어떻게 그걸 할 수 있겠 어? 비록 내가 확실히 권한이있는 D : 드라이브에 대한 경로를 하드 코딩하더라도 파일이 작성되지 않기 때문에 이것이 대답인지 확신 할 수 없습니다. 그래도 위치를 먼저 고정하고 도움이되는지 확인하는 것이 좋습니다. 감사 –