Мы уже давно используем в своей базе данных appender (AdoNetAppender). Мы сейчас работаем над развертыванием и не видим никаких ошибок в базе данных. у нас есть одна мысль: соединение с базой данных блокируется брандмауэром, но вы уже можете видеть, куда это входит в круг боли.
Я добавил RollingFileAppender, FileAppender, попытался использовать bufferingForwarder и перепробовал все в зеленом мире stackoverflow, чтобы решить эту проблему, и абсолютно ничего не меняется. Я даже удалил ссылку на AdoNetAppender, и теперь он вообще не регистрирует ошибки, тогда как с AdoNetAppender он регистрировал ошибки дважды - один раз для AdoNetAppender, один раз для FileAppender.
Мой код xml:
<root>
<level value="ALL"/>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="AdoNetAppender"/>
</root>
<appender name="AdoNetAppender">
<!--working xml. No need to post this information-->
</appender>
<appender name="BufferingForwarder" type="log4net.Appender.BufferingForwardingAppender">
<bufferSize value="5" />
<lossy value="false" />
<appender-ref ref="fileAppender" />
<!-- or any additional appenders or other forwarders -->
</appender>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\log4net.log"/>
<datePattern value="yyyy-MM-dd'-FULL.log'" />
<appendToFile value="true"/>
<preserveLogFileNameExtension value="true"/>
<rollingStyle value="Size"/>
<maximumFileSize value="250KB"/>
<maxSizeRollBackups value="-1"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
Мой код c #:
(с использованием Logger: ExceptionFilterAttribute)
private static ILog Log;
private static ILog FileLog;
private static bool _isConfigured = false;
private static void ConfigureLogger()
{
if (_isConfigured) return;
XmlConfigurator.Configure();
FileLog = LogManager.GetLogger("RollingFileAppender")
Log = LogManager.GetLogger("AdoNetAppender")
_isConfigured = true;
}
public static void Error(string message, Exception e) {
ConfigureLogger();
Log.Error(message, e);
}
public override void OnException(HttpActionExecutedContext context)
{
Error("Unexpected error occurred", context.Exception);
ConfigureLogger();
if (FileLog != null)
FileLog.Error("Unexpected Error Occurred", context.Exception);
}