답변:
먼저 애플리케이션 구성 파일에서이 값을 설정해야합니다.
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
</configuration>
그런 다음 출력을 저장할 파일을 결정하기 위해 동일한 .config 파일에 다음 코드를 추가 할 수 있습니다.
<configuration>
...
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
...
</configuration>
'log4net 내부 디버깅을 어떻게 활성화합니까?'에서 더 자세한 설명을 찾을 수 있습니다. 에서 log4net의 FAQ 페이지 .
C:\tmp\log4net.txt
로 변경 C:\log4net.txt
하면 텍스트 파일을 생성 할 수 있습니다.
<configSections></configSections>
아래의 첫 번째 항목 인지 확인하십시오 <configuration>
. 그렇지 않으면 오류가 발생합니다.
traceOutputOptions="TimeStamp"
과 태그 traceOutputOptions="DateTime"
에서 설정을 시도했지만 add
로그 파일 내용에서 아무것도 변경되지 않습니다. 누군가가 추적 로그 파일에 각 줄 / 항목의 시간을 표시하도록 log4net을 설정하는 방법을 알고 있습니까?
진입 점이있는 루트 응용 프로그램이 log4net에 무언가를 기록하는지 확인하십시오. 다음 중 하나를 제공하십시오.
private static ILog logger = LogManager.GetLogger(typeof(Program));
static void Main(string[] args)
{
logger.InfoFormat("{0} v.{1} started.", Assembly.GetExecutingAssembly().GetName().Name, Assembly.GetExecutingAssembly().GetName().Version.ToString());
2.0.8에서는 흥미로운 상황이있었습니다. 라이브러리 프로젝트와 테스트 exe 프로젝트를 작성하여 기능을 시연했습니다. 라이브러리 프로젝트는 exe 프로젝트와 마찬가지로 Log4net을 사용하도록 설정되었습니다. exe 프로젝트는 assemblyinfo 속성을 사용하여 구성을 등록했지만 콘솔 또는 로그 파일에 로깅 출력을 얻지 못했습니다. log4net 내부 디버그 로깅을 켰을 때 콘솔에 일부 내부 메시지가 기록되었지만 여전히 정상적인 로그는 없습니다. 오류가보고되지 않았습니다. 위의 코드를 프로그램에 추가하면 모두 작동하기 시작했습니다. 그렇지 않으면 Log4net이 올바르게 설정되었습니다.