로그 기록 위치 변경
로그의 기본 경로를 변경할 때 적용 가능
<!--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;