ASP.NET MVC 5:log4net 不写入文件
ASP.NET MVC 5: log4net doesn't write to file
我尝试将 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 的项目中?我在 Whosebug 和其他平台上浏览了类似的主题,但没有任何帮助。
解法:
此 link 下的教程完成了工作:https://code.msdn.microsoft.com/How-to-use-Apache-log4net-0d969339
立即使用
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
更新:-
请参考这个 link Alternate solutions
我尝试将 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 的项目中?我在 Whosebug 和其他平台上浏览了类似的主题,但没有任何帮助。
解法:
此 link 下的教程完成了工作:https://code.msdn.microsoft.com/How-to-use-Apache-log4net-0d969339
立即使用
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
更新:- 请参考这个 link Alternate solutions