[C#] Log4net이 로그 파일에 로그를 쓰지 않습니다

Log4net을 사용하여 간단한 시나리오를 만들었지 만 메시지가 로그 파일에 추가되지 않아서 로그 어 펜더가 작동하지 않는 것 같습니다.

web.config 파일에 다음을 추가했습니다.

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
</configSections>

<log4net>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
            <file value="D:\MyData\Desktop\LogFile.txt" />
            <appendToFile value="true" />
            <encoding value="utf-8" />
            <layout type="log4net.Layout.SimpleLayout" />
    </appender>


    <root>
        <level value="INFO" />
        <appender-ref ref="LogFileAppender" />
    </root>
</log4net>

글로벌 ASAX 파일 내에서 다음을 추가했습니다.

ILog logger = LogManager.GetLogger(typeof(MvcApplication));

그리고 Application_Start 메소드 내에서 :

logger.Info("Starting the application...");

테스트 로그 “응용 프로그램 시작 중 …”이 로그 파일에 추가되지 않는 이유는 무엇입니까?



답변

전화하세요

log4net.Config.XmlConfigurator.Configure();

log4net이 구성을 읽을 수있는 곳이 있습니까? 예를 들어 Global.asax에서 :

void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup

    // Initialize log4net.
    log4net.Config.XmlConfigurator.Configure();
}


답변

이 FAQ 페이지를 사용하십시오 : Apache log4net 자주 묻는 질문

약 3/4는 응용 프로그램 추적을 사용하여 log4net 디버깅을 활성화하는 방법을 알려줍니다. 문제가 어디에 있는지 알려줍니다.

기본 사항은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

그리고 당신은 표준 출력에서 ​​추적을 볼


답변

@AndreasPaulsson이 제안했듯이 구성해야합니다. AssemblyInfo파일 에서 구성을 수행하고 있습니다 . configuration file name여기에 지정합니다 .

// Log4Net Configuration.
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]


답변

또한 [log4net] .config에 대해 “항상 복사” 옵션이 선택되어 있는지 확인하십시오

여기에 이미지 설명을 입력하십시오


답변

사이트에서 실행중인 프로세스 (계정)에 출력 디렉토리에 쓸 수있는 권한이 있는지 확인하십시오.

IIS 7 이상에서는 응용 프로그램 풀에 구성되며 일반적으로 AppPool Identity 이며 일반적으로 모든 디렉토리에 쓸 수있는 권한이 없습니다.

이벤트 로그 (응용 프로그램 및 보안)를 확인하여 예외가 발생했는지 확인하십시오.


답변

끼워 넣다:

 [assembly: log4net.Config.XmlConfigurator(Watch = true)]

AssemblyInfo.cs 파일 끝에서


답변

나를 위해 로그 파일의 위치를 ​​옮겼으며 파일 이름을 다른 이름으로 변경했을 때만 다시 시작되었습니다.

같은 이름의 로그 파일이 이미 존재하면 아무 일도 일어나지 않는 것 같습니다.

그런 다음 이전 파일의 이름을 바꾸고 구성의 로그 파일 이름을 다시 원래대로 변경했습니다.