Nice programing

웹 애플리케이션에서 Log4Net 구성

nicepro 2020. 11. 26. 19:53
반응형

웹 애플리케이션에서 Log4Net 구성


이 코드와 아래 구성 파일이 있습니다.

ILog log = LogManager.GetLogger(typeof(MyClass));
log.Debug("Testing");

TestProj디렉토리는 생성되지 않으며 내가 생성하면 TestLog.txt파일도, 로그도 없습니다.

어떤 생각?

감사,

구성 파일

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

<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="C:\\TestProj\\TestLog.txt" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="10MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
  </layout>
</appender>

<root>
  <level value="DEBUG" />
  <appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>

당신은의 Configure기능 을 호출해야 합니다XmlConfigurator

log4net.Config.XmlConfigurator.Configure();

첫 번째 loggin 호출 전에 호출하거나 Global.asax에서 다음과 같이 호출하십시오.

protected void Application_Start(Object sender, EventArgs e) {
   log4net.Config.XmlConfigurator.Configure();
}

이를 수행하는 또 다른 방법은 웹 애플리케이션의 어셈블리 정보에 다음 행을 추가하는 것입니다.

// Configure log4net using the .config file
[assembly: log4net.Config.XmlConfigurator(Watch = true)]

Shriek와 비슷합니다.


1 : AssemblyInfo 클래스에 다음 줄 추가

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

2 : 다음 .Net Framework 4 Client Profile과 같이 사용하지 마십시오. Target Framework(그렇지 않으면 컴파일되지 않을 것이기 때문에 이것이 괜찮다고 생각합니다)

3 : 프로그램에서 아주 일찍 로그인하십시오. 그렇지 않으면 일부 시나리오에서 제대로 초기화되지 않습니다 ( log4net FAQ 에서 자세히 알아보기 ).

따라서 응용 프로그램을 시작하는 동안 Global.asax에 기록하십시오.

public class Global : System.Web.HttpApplication
{
    private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(Global));
    protected void Application_Start(object sender, EventArgs e)
    {
        Log.Info("Startup application.");
    }
}

4 : 주어진 경로에 파일과 폴더를 만들 수있는 권한이 있는지 확인하십시오 (폴더 자체도 존재하지 않는 경우).

5 : 제공된 나머지 정보는 괜찮아 보입니다.


종종 이것은 누락 된 권한 때문입니다. 로컬 IIS 응용 프로그램 풀이 실행되는 Windows 계정에 응용 프로그램 디렉터리에 대한 쓰기 권한이 없을 수 있습니다. 어딘가에 디렉토리를 만들고 모든 사람에게 쓰기 권한을 부여하고 log4net 구성이 해당 디렉토리를 가리 키도록 할 수 있습니다. 그런 다음 여기에 로그 파일이 생성되면 앱 풀이 쓸 수 있도록 원하는 로그 디렉터리에 대한 권한을 수정할 수 있습니다.

Another reason could be an uninitialized log4net. In a winforms app, you usually configure log4net upon application start. In a web app, you can do this either dynamically (in your logging component, check if you can create a specific Ilog logger using its name, if not -> call configure()) or again upon application start in global.asax.cs.


I also had the similar issue. Logs were not creating.

Please check logger attribute name should match with your LogManager.GetLogger("name")

<logger name="Mylog">
      <level value="All"></level>
      <appender-ref ref="RollingLogFileAppender" />
    </logger>



private static readonly ILog Log = LogManager.GetLogger("Mylog");

참고URL : https://stackoverflow.com/questions/10204171/configure-log4net-in-web-application

반응형