Недавно у меня возникла проблема с работой Log4Net ( описано здесь ), но после этого все было в порядке.
Я оставил это на некоторое время, потому что мне нужно было разработать некоторые модули, и яоставил лесозаготовки несколько позади.Теперь, когда я посмотрел, я даже попытался изменить имя файла журнала и местоположение (установить его статически), он создает его, но ничего не записывает в обоих случаях.
ЭтоМой конфигурационный файл log4Net:
<?xml version="1.0"?>
<configuration>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<appender name="console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message%newline" />
</layout>
</appender>
<appender name="file" type="log4net.Appender.RollingFileAppender">
<file value="ApplicationLogging.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
</log4net>
</configuration>
Это мой Global.asax
[assembly: XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
XmlConfigurator.Configure();
ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
logger.Info("Application started.");
Как я это заявляю:
readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Я иногда использую это так:
logger.Info("some logging here");
Или для ведения журнала контекста я бы использовал это так:
context.Database.Log = (dbLog => logger.Debug(dbLog));
Файлсоздается, но в него не записывается содержимое. Может кто-нибудь посоветовать мне, где или что искать?
ОБНОВЛЕНИЕ: Как предложено stuartd iдобавил это в web.config:
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
Который пишет следующее содержание (pastebin)
Обратите внимание, что я удалил первый раздел, который я не сделалне видел раньше, и я думаю, что это избыточно?
<!--<appender name="console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message%newline" />
</layout>
</appender>-->
В любом случае, с этим или без него это не работает.
Вот вывод С первой частью, НЕ закомментированной (в исходном состоянии)
Я также попробовал следующее: https://logging.apache.org/log4net/release/config-examples.html https://csharp.today/log4net-tutorial-great-library-for-logging/
Я понятия не имею, почему он может его создать, но не писать в него ... Кажется, я не могу найти что-либо в Интернете, все вопросы касаются создания файла, а не записи в него.