Файл конфигурации библиотеки классов не важен, рассматривается файл конфигурации проекта запуска. Следовательно, если вы запишите эту конфигурацию в файл конфигурации вашего проекта запуска, она, вероятно, будет работать ожидаемым образом.
Если вы хотите управлять конфигурацией из одного файла конфигурации, вы можете сгенерировать файл log4net.config и загрузить его следующим образом:
Примечание: если вы создаете отдельный файл конфигурации в общем проекте, вы изменяете свойства CopyToOutputDirectory как always
или if newer
.
Файл конфигурации:
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<logger name="log4netFileLogger">
<appender name="log4netFileAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString">
<conversionPattern value="C:\Logger\%date{yyyy-MM-dd}.log" />
</file>
<param name="RollingStyle" value="Date" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%newline%newline%date [%thread] %-5level - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="log4netFileAppender" />
</root>
</logger>
</log4net>
Класс журнала:
public class CustomLogger
{
private readonly ILog _log;
public CustomLogger()
{
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
var configFileDirectory = Path.Combine(baseDirectory, "log4net.config");
FileInfo configFileInfo = new FileInfo(configFileDirectory);
log4net.Config.XmlConfigurator.ConfigureAndWatch(configFileInfo);
_log = log4net.LogManager.GetLogger("log4netFileLogger");
}
public void Info(string value)
{
_log.Info(value);
}
}
Свойства файла конфигурации:
файл журнала:
Веб-приложению нужны события перед сборкой:
xcopy /E /Y /R "$(ProjectDir)..\CommonNetFrameworkLibrary\log4net.config" "$(ProjectDir)"
ПРИМЕЧАНИЕ. В классе Logger важен приведенный ниже код. Если вы не ищете базовый каталог, регистрация будет работать только для Консольного приложения. Причина в том, что: файл поиска консольного приложения для каталога bin
, но файл поиска веб-приложения для C:\ProgramFiles\IIS
.
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
var configFileDirectory = Path.Combine(baseDirectory, "log4net.config");