log.config 경로 변경
log4net 에서는 각각의 로그에 대한 설정을 보통 log.config 파일로 관리하며, 파일의 내용이 바뀌면 설정에 바로 반영하기 위해 다음의 구문을 사용합니다.
[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"Data\log.config", Watch = true)]
다만, 이 방식에서의 파일 참조 경로는 컴파일시 결정이 됩니다. 따라서 절대 경로나, 프로그램 시작 위치로부터 상대 경로로만 설정 가능하며. 다음의 경로는 사용하기 어렵습니다.
- AppData 폴더등 OS 에 따라 바뀌는 경로
- 런타임에 결정되는 경로 이런 경우, 다음의 방식을 사용할 수 있습니다.
string _configFilePath = string.Empty;
public string ConfigFilePath
{
get => _configFilePath;
set
{
_configFilePath = value;
var logfile = new FileInfo(_configFilePath);
log4net.Config.XmlConfigurator.ConfigureAndWatch(logfile); ((log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository()).RaiseConfigurationChanged(EventArgs.Empty);
}
}
private void Init()
{
// ConfigFilePath 에 log.config 파일 경로 입력
ConfigFilePath = $@"{FileManager.AppPath}\log.config";
}