代码之家  ›  专栏  ›  技术社区  ›  john84

Log4net不写入日志文件

  •  140
  • john84  · 技术社区  · 14 年前

    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>        
    </configSections>
    
    <log4net>
        <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
                <file value="D:\MyData\Desktop\LogFile.txt" />
                <appendToFile value="true" />
                <encoding value="utf-8" />
                <layout type="log4net.Layout.SimpleLayout" />
        </appender>
    
    
        <root>
            <level value="INFO" />
            <appender-ref ref="LogFileAppender" />
        </root>
    </log4net>
    

    ILog logger = LogManager.GetLogger(typeof(MvcApplication));
    

    在应用程序启动方法中:

    logger.Info("Starting the application...");
    

    8 回复  |  直到 4 年前
        1
  •  324
  •   Andreas Paulsson    14 年前

    你打电话吗

    log4net.Config.XmlConfigurator.Configure();
    

    在什么地方让log4net读取您的配置?例如,在全球.asax:

    void Application_Start(object sender, EventArgs e) 
    {
        // Code that runs on application startup
    
        // Initialize log4net.
        log4net.Config.XmlConfigurator.Configure();
    }
    
        2
  •  54
  •   TFD    12 年前

    Apache log4net Frequently Asked Questions

    它告诉您如何通过使用应用程序跟踪来启用log4net调试。这会告诉你你的问题在哪里。

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <appSettings>
            <add key="log4net.Internal.Debug" value="true"/>
        </appSettings>
    </configuration>
    

    你可以看到标准输出中的痕迹

        3
  •  39
  •   LCJ    11 年前

    正如@AndreasPaulsson所建议的,我们需要配置它。我在做配置 AssemblyInfo 文件。我指定 configuration file name 在这里。

    // Log4Net Configuration.
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
    
        4
  •  36
  •   Ayub    4 年前

    另外,确保 “始终复制”

    enter image description here

        5
  •  26
  •   Oded    14 年前

    确保运行站点的进程(帐户)具有写入输出目录的权限。

    在iis7及更高版本中,这是在应用程序池上配置的,通常是 AppPool Identity

        6
  •  21
  •   shay    9 年前

    插入:

     [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    

    结束时 文件

        7
  •  3
  •   Jay Byford-Rew    7 年前

    对我来说,我移动了日志文件的位置,只有当我把文件的名称改成其他名称时,它才重新开始。

    如果已经存在一个同名的日志文件,那么什么也不会发生。

    之后,我重命名了旧文件,并将配置中的日志文件名再次更改为原来的文件名。

        8
  •  2
  •   zanussi    8 年前

    因此,请注意项目名称中的空格。我已经吸取了教训。

        9
  •  2
  •   Rahatur    5 年前

    IIS_IUSRS 对日志文件的读/写权限。

        10
  •  1
  •   Prajakta Kale Gopi Rajkumar    5 年前

    确保下列行代码应该在装配信息.cs文件。

    并在Application\u start()方法中检查这一行。

    log4net.Config.XmlConfigurator.Configure();
    
        11
  •  1
  •   Derek C.    4 年前

    对我来说,我不得不把记录器移到一个Nuget包中。下面的代码需要添加到NuGet包项目中。

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]
    

    看到了吗 https://gurunadhduvvuru.wordpress.com/2020/04/30/log4net-issues-when-moved-it-to-a-nuget-package/ 更多细节。

        12
  •  0
  •   Mahmut EFE    4 年前

    var logRepo = LogManager.GetRepository(Assembly.GetEntryAssembly());
    XmlConfigurator.Configure(logRepo, new FileInfo("log4net.config"));
    

    注册进程后,可以调用下面的定义来调用记录器:

    private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
    
    log.Error("Sample log");
    
        13
  •  0
  •   RotatingWheel    4 年前

    我在寻找解决方案时发现它很有用。解决方案如下: https://www.hemelix.com/log4net/