로그 기록 위치 변경

로그의 기본 경로를 변경할 때 적용 가능

<!--CLib-->
    <appender name="CLib" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="%property{LogPath}\" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd\\'CLib.log'" />
      <preserveLogFileNameExtension value="true"/>
      <staticLogFileName value="false" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%date{yyyy-MM-dd}][%date{HH:mm:ss.fff}] [%level] %message%newline" />
      </layout>
    </appender>
    <logger name="CLib">
      <level value="DEBUG" />
      <appender-ref ref="CLib" />
    </logger>
	
    <!--CLib2-->
    <appender name="CLib2" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="%property{LogPath}\" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd\\'Clib2.log'" />
      <preserveLogFileNameExtension value="true"/>
      <staticLogFileName value="false" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%date{yyyy-MM-dd}][%date{HH:mm:ss.fff}] [%level] %message%newline" />
      </layout>
    </appender>
    <logger name="CLib2">
      <level value="TRACE" />
      <appender-ref ref="CLib2" />
    </logger>
string _path = string.Empty;
public string Path
{
    get => _path;
    set
    {
        _path = value;
        GlobalContext.Properties["LogPath"] = _path;
        var logfile = new FileInfo(_configFilePath);
        log4net.Config.XmlConfigurator.ConfigureAndWatch(logfile);
        ((log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository()).RaiseConfigurationChanged(EventArgs.Empty);
    }
}
public void ChangeLogPath(string path) => Path = path;
  • log.config 파일에서 file의 value에 폴더 이름을 적용할 수 있게 property 로 설정
    <file type="log4net.Util.PatternString" value="%property{LogPath}\" />
  • datapattern 에 나머지 경로와 파일 이름 설정
	<datePattern value="yyyyMMdd\\'CLib.log'" />
  • GlobalContext.Properties 를 이용해 폴더 이름에 해당하는 property 설정
	GlobalContext.Properties["LogPath"] = _path;