У меня есть книга, исследуя все виды проектов в SNOBOL. Первая глава исследует историю и культуру вокруг программирования SNOBOL и языка и проводит некоторое время, приводя аргумент, что хорошему программисту нравится язык не из-за его дефектов, но в в злости из них.
Мой любимый язык Незначок Значка / . Но существуют все еще вещи, которые раздражают меня об этом:
explode()
и implode()
. У меня была такая же проблема, и я думаю, что она смотрела не на тот web.config или что-то в этом роде. Я наконец отделил log4net.config от web.config и указал путь к нему \ inetpub \ Logs \ log4net.config, и все в порядке.
UDPATED ON REQUEST: отредактировано из немного более сложной версии.
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level (%logger:%line) - %message%newline" />
</layout>
</appender>\
<root>
<!--ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF-->
<level value="ALL" />
<appender-ref ref="TraceAppender" />
</root>
</log4net>
И это настроено в коде следующим образом:
var logpath = WebConfigurationManager.AppSettings["LogConfigPath"] ?? @"\Inetpub\Logs\log4net.config";
var finfo = new System.IO.FileInfo ( logpath );
XmlConfigurator.Configure( finfo );
ASP.Net имеет ограничение на использование доступа к файловой системе, поэтому попробуйте явно указать каталог в App_Data (если это разрешено) Вот мой рабочий пример:
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="App_Data\logging\log-file.txt"/>
Или с опрокидыванием
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="App_Data\logging\log-append.txt"/>
Есть как минимум 2 возможные проблемы:
Чтобы отладить это, я бы создал пустой каталог, предоставил всем полный контроль, настроил для входа в этот каталог. Затем проверьте его, убедитесь, что он работает, а затем постепенно повышайте безопасность до приемлемого уровня.
Хорошо, нашел ответ. Мне нужно было использовать TraceAppender .
Файл конфигурации приложения можно использовать для управления слушателями действительно используются. См. MSDN документация по классу Trace для подробности о настройке трассировки системе.
События записываются с использованием System.Diagnostics.Trace.Write (строка, строка) метод. Имя регистратора событий: передается как значение для категории имя метода записи.
Вот мои данные конфигурационного файла ...
<log4net>
<appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!-- Setup the root category, add the appenders and set the default level -->
<root>
<level value="ALL" />
<appender-ref ref="TraceAppender" />
</root>
</log4net>