在Web应用程序中配置Log4Net

Kri*_*s-I 63 c# log4net

我有这个代码和下面的配置文件:

ILog log = LogManager.GetLogger(typeof(MyClass));
log.Debug("Testing");
Run Code Online (Sandbox Code Playgroud)

TestProj目录未创建,如果我创建它,没有TestLog.txt文件,没有日志......没有.

任何的想法?

谢谢,

配置文件

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="C:\\TestProj\\TestLog.txt" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="10MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
  </layout>
</appender>

<root>
  <level value="DEBUG" />
  <appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)

shr*_*iek 119

你需要调用的Configure功能XmlConfigurator

log4net.Config.XmlConfigurator.Configure();
Run Code Online (Sandbox Code Playgroud)

可以在第一次登录之前调用,也可以在Global.asax中调用,如下所示:

protected void Application_Start(Object sender, EventArgs e) {
   log4net.Config.XmlConfigurator.Configure();
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在使用Web项目,则可能必须执行新项目并添加Global.asax文件,因为默认情况下它不存在.你也应该立即记录一些东西.log4net.Config.XmlConfigurator.Configure(); log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); log.Debug("在Application_Start中设置."); (2认同)

ken*_*eni 23

另一种方法是将此行添加到Web应用程序的程序集信息中:

// Configure log4net using the .config file
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)

与Shriek相似.


hwc*_*rwe 10

1:将以下行添加到AssemblyInfo类中

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)

2:确保你不使用.Net Framework 4 Client Profileas Target Framework(我认为你可以这样做,因为否则它甚至无法编译)

3:确保您在程序中尽早登录.否则,在某些情况下,它将无法正确初始化(请参阅log4net常见问题解答).

因此,在Global.asax中的应用程序启动期间记录一些内容

public class Global : System.Web.HttpApplication
{
    private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(Global));
    protected void Application_Start(object sender, EventArgs e)
    {
        Log.Info("Startup application.");
    }
}
Run Code Online (Sandbox Code Playgroud)

4:确保您有权在给定路径上创建文件和文件夹(如果文件夹本身也不存在)

5:其余的给定信息看起来不错

  • @Default请参阅[FAQ]中的"我应该何时记录我的第一条消息"(https://logging.apache.org/log4net/release/faq.html) (4认同)
  • 你有支持第3点的来源吗? (3认同)