별도 설정 파일

log4net 설정을 별도 log4net.config 파일로 분리하여 web.config와 섞이지 않게 합니다. 어셈블리 어트리뷰트로 설정 파일을 자동으로 불러옵니다.

1 log4net.config 생성

웹 사이트 루트 디렉터리에 배치

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <!--txt 파일에 로그 저장-->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--로그 루트 경로:사이트 루트/logs-->
      <param name="File" value="logs\\" />
      <!--파일 끝에 이어쓰기-->
      <param name="AppendToFile" value="true" />
      <!--백업 파일 최대 10개 유지-->
      <param name="MaxSizeRollBackups" value="10" />
      <!--날짜 기준 동적 파일 이름 사용-->
      <param name="StaticLogFileName" value="false" />
      <!--디렉터리 구조 logs/yyyy/MM/yyyy-MM-dd.log -->
      <param name="DatePattern" value="yyyy\\MM\\yyyy-MM-dd&quot;.log&quot;" />
      <!--날짜 기준 로그 순환-->
      <param name="RollingStyle" value="Date" />

      <!--로그 출력 포맷-->
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      </layout>
    </appender>

    <!--루트 로거, 출력 앱더 연결-->
    <root>
      <level value="ALL" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
  </log4net>
</configuration>Code language: HTML, XML (xml)

2 AssemblyInfo.cs 초기화 설정

프로젝트 내 Properties/AssemblyInfo.cs 파일을 열고 파일 맨 뒤에 아래 코드를 추가하세요:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]Code language: JSON / JSON with Comments (json)
  • ConfigFile="log4net.config":별도 설정 파일 경로 지정(웹사이트 루트)
  • Watch=true:핫 리로드 활성화. 웹사이트 재시작 없이 log4net.config 수정사항 즉시 적용

3 페이지 호출 예제 코드

using log4net;

public partial class Default : System.Web.UI.Page
{
    // 로거 인스턴스 생성
    public ILog log = LogManager.GetLogger("Default.aspx 페이지 로거");

    protected void Page_Load(object sender, EventArgs e)
    {
        log.Info("일반 로그");
        log.Error("오류 로그");
        log.Debug("디버그 정보");
    }
}

별도 설정 파일

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다