ASP.NET MVC 5:log4net不会写入文件

时间:2018-06-21 11:06:25

标签: c# asp.net-mvc-5 log4net

我尝试将log4net添加到我的ASP.NET MVC 5项目中,但是它拒绝写入日志文件。我的log4net.xml文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<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="C:/Users/Andreas/Documents/logs/myapp.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>

我将配置加载到我的Startup.cs中,如下所示:

XmlConfigurator.Configure(new FileInfo(Path.Combine("log4net.xml")));

我将记录器包括在我想这样登录的类中:

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

和我的记录命令:

log.Info("Hello logging world!");

我试图激活log4net的内部日志记录,或者它没有引发任何异常或者它不起作用,我没有从log4net获得任何日志。有没有更好的方法将log4net包含在基于project.json的项目中?我浏览了关于stackoverflow和其他平台的类似主题,但没有任何帮助。

解决方案:

此链接下的教程完成了这项工作:https://code.msdn.microsoft.com/How-to-use-Apache-log4net-0d969339

1 个答案:

答案 0 :(得分:0)

立即使用

using log4net;
using log4net.Repository.Hierarchy;
using log4net.Core;
using log4net.Appender;
using log4net.Layout;

namespace Spectrum.Logging
{
    public class Logger
    {
        public static void Setup()
        {
            Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();

            PatternLayout patternLayout = new PatternLayout();
            patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
            patternLayout.ActivateOptions();

            RollingFileAppender roller = new RollingFileAppender();
            roller.AppendToFile = false;
            roller.File = @"Logs\EventLog.txt";
            roller.Layout = patternLayout;
            roller.MaxSizeRollBackups = 5;
            roller.MaximumFileSize = "1GB";
            roller.RollingStyle = RollingFileAppender.RollingMode.Size;
            roller.StaticLogFileName = true;            
            roller.ActivateOptions();
            hierarchy.Root.AddAppender(roller);

            MemoryAppender memory = new MemoryAppender();
            memory.ActivateOptions();
            hierarchy.Root.AddAppender(memory);

            hierarchy.Root.Level = Level.Info;
            hierarchy.Configured = true;
        }
    }
}

然后我要做的就是用以下调用替换我调用XML文件的代码:

//XmlConfigurator.Configure(new FileInfo("app.config")); // Not needed anymore
Logger.Setup();

完成所有操作,然后尝试:-

对于reference

更新:- 请参考此链接Alternate solutions