k11*_*1k2 45 c# asp.net log4net log4net-configuration asp.net-core-2.0
我log4net在我的asp.net core 2.0应用程序中配置,如本文中提到的LINK
Program.cs中
public static void Main(string[] args)
{
var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));
BuildWebHost(args).Run();
}
Run Code Online (Sandbox Code Playgroud)
HomeController的
public class HomeController : Controller
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(HomeController));
public IActionResult Error()
{
log.Info("Hello logging world!");
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
Run Code Online (Sandbox Code Playgroud)
log4net.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="RollingFile" />
</root>
<appender name="RollingFile" type="log4net.Appender.FileAppender">
<file value="?C:\Temp\app.log" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" />
</layout>
</appender>
</log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
倒霉!我没有看到生成的任何文件C:\Temp\app.log目录.那会是什么错误?如何配置log4netasp.net core 2.0?
Jan*_*sky 58
请注意,已有用于ASP.NET Core日志记录界面的log4net适配器.
你唯一需要做的就是把它ILoggerFactory传给你的Startup班级,然后打电话
loggerFactory.AddLog4Net();
Run Code Online (Sandbox Code Playgroud)
并有一个配置到位.所以你不必写任何锅炉电镀代码.
https://github.com/huorswords/Microsoft.Extensions.Logging.Log4Net.AspNetCore
Irf*_*raf 34
我成功地使用以下代码记录文件
public static void Main(string[] args)
{
XmlDocument log4netConfig = new XmlDocument();
log4netConfig.Load(File.OpenRead("log4net.config"));
var repo = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(),
typeof(log4net.Repository.Hierarchy.Hierarchy));
log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);
BuildWebHost(args).Run();
}
Run Code Online (Sandbox Code Playgroud)
网站root中的log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="C:\Temp\" />
<datePattern value="yyyy-MM-dd.'txt'"/>
<staticLogFileName value="false"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<maxSizeRollBackups value="100"/>
<maximumFileSize value="15MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level App %newline %message %newline %newline"/>
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
您需要安装Microsoft.Extensions.Logging.Log4Net.AspNetCore NuGet 包并将 log4net.config 文件添加到您的应用程序。那么这应该工作:
public class Program
{
private readonly ILogger<Program> logger;
public Program()
{
var services = new ServiceCollection()
.AddLogging(logBuilder => logBuilder.SetMinimumLevel(LogLevel.Debug))
.BuildServiceProvider();
logger = services.GetService<ILoggerFactory>()
.AddLog4Net()
.CreateLogger<Program>();
}
static void Main(string[] args)
{
Program program = new Program();
program.Run();
Console.WriteLine("\n\nPress any key to continue...");
Console.ReadKey();
}
private void Run()
{
logger.LogInformation("Logging is working");
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
还在寻找解决方案吗?我从这个链接中得到了我的帮助。
我要做的就是在“程序类”的“ public static void Main”方法的顶部添加这两行代码。
var logRepo = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepo, new FileInfo("log4net.config"));
Run Code Online (Sandbox Code Playgroud)
是的,您必须添加:
您还可以配置asp.net核心应用程序,以使在输出控制台中记录的所有内容都记录在您选择的附加程序中。您也可以从github下载此示例代码,并查看我如何配置它。
| 归档时间: |
|
| 查看次数: |
70199 次 |
| 最近记录: |