Спасибо за ваши усилия, но ваш последний ответ немного неправильный. Если вы используете атрибут сборки для подключения файла конфигурации, вам также не нужно подключать его в Global.asax.cs. Вместо этого вы можете просто вызвать XmlConfigurator.Configure ();

я странная проблема с log4net.

В приложении ASP.NET я хочу настроить log4net внешне, поэтому у меня есть отдельный файл log4net.config, который я подключаю к своему веб-приложению с помощью этой строки в файле AssemblyInfo.cs, принадлежащем моему веб-приложению:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]

Теперь, если я создаю экземпляр класса log4net logger обычным способом, подобным этому:

public class MyClass
{
    private static readonly ILog _logger = log4net.LogManager.GetLogger(typeof(MyClass));
    ....

Тогда это работает, и регистрация работает как обычно. Тем не менее, я поместил свой код регистрации в класс LogManager, который является частью отдельной сборки (Infrastructure) и повторно используется в ряде проектов. У него есть GetLogger, который выглядит так:

public static class LogManager
{
    public static ILog GetLogger()
    {
        var stack = new StackTrace();
        var frame = stack.GetFrame(1);
        return new log4net.LogManager.GetLogger(frame.GetMethod().DeclaringType);
    }
}

Так что я могу использовать это в моем коде asp.net:

public class MyClass
{
    private static readonly ILog _logger = LogManager.GetLogger();
    ....

Но ... Это не работает! Ведение журнала не производится. Не похоже, что файл конфигурации подключен правильно. Если я поместил мою конфигурацию log4net непосредственно в web.config, то этот LogManager работает нормально.

Ответы на вопрос(2)

Ваш ответ на вопрос