asp.net核心 – 在ASP.NET核心应用程序中使用NLog
|
我发现一个 CodeProject的例子,如何让这个工作,但它不工作。主要的问题似乎是Nuget中似乎不存在“Microsoft.Framework.Logging.NLog”:“1.0.0- *”包。我看过 this StackOverflow question,看了它引用的GitHub示例,但它似乎包含相同的问题。 我试图让我自己工作,我想出来的最好的是: public class NLogLogger : ILogger
{
public NLogLogger()
{
new WebLoggerConfigurer().ConfigureDefault();
}
public void Log(LogLevel logLevel,int eventId,object state,Exception exception,Func<object,Exception,string> formatter)
{
// currently need the global:: for LogLevels because our namespace contains NLog in it. Is there a better naming convention we could use instead?
var ll = logLevel == LogLevel.Debug ? global::NLog.LogLevel.Debug
: logLevel == LogLevel.Verbose ? global::NLog.LogLevel.Trace
: logLevel == LogLevel.Critical ? global::NLog.LogLevel.Fatal
: logLevel == LogLevel.Error ? global::NLog.LogLevel.Error
: logLevel == LogLevel.Information ? global::NLog.LogLevel.Info
: logLevel == LogLevel.Warning ? global::NLog.LogLevel.Warn
: global::NLog.LogLevel.Off;
LogManager.GetCurrentClassLogger().Log(ll,formatter(state,exception));
}
public bool IsEnabled(LogLevel logLevel)
{
return true;
}
public IDisposable BeginScopeImpl(object state)
{
return new Disposable(() => { });
}
}
public class NLogLoggerProvider : ILoggerProvider
{
public void Dispose()
{
}
public ILogger CreateLogger(string categoryName)
{
return new NLogLogger();
}
}
public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerFactory)
{
loggerFactory.AddProvider(new NLogLoggerProvider());
..
}
BeginScopeImpl的实现似乎是一个黑客,但我不确定如何最好地实现它。 >这看起来像一个有效的实现选项吗? 解决方法Microsoft.Framework.Logging.NLog已被替换为 NLog.Extensions.Logging on NuGet,由NLog团队维护。对于ASP.NET Core,您需要NLog.Web.AspNetCore(依赖于 如何使用: public void Configure(IApplicationBuilder app,ILoggerFactory loggerFactory)
{
//add NLog to .NET Core
loggerFactory.AddNLog();
//Enable ASP.NET Core features (NLog.web) - only needed for ASP.NET Core users
app.AddNLogWeb();
//needed for non-NETSTANDARD platforms: configure nlog.config in your project root. NB: you need NLog.Web.AspNetCore package for this.
env.ConfigureNLog("nlog.config");
...
//you could use LogManager.Configuration from here
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
// e.g. services.AddMvc();
//needed for NLog.Web
services.AddSingleton<IHttpContextAccessor,HttpContextAccessor>();
}
示例如何配置,日志和过滤器,另请参见README.md in GitHub。 public class HomeController : Controller
{
protected ILogger Logger { get; }
public HomeController(ILoggerFactory loggerFactory,IServiceProvider serviceProvider)
{
Logger = loggerFactory.CreateLogger(GetType().Namespace);
Logger.LogInformation("created homeController");
}
配置: <?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogLevel="Warn"
internalLogFile="c:tempinternal.txt">
<extensions>
<!--enable NLog.Web for ASP.NET Core-->
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<!-- define various log targets -->
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="allfile" fileName="c:tempnlog-all-${shortdate}.log"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
<target xsi:type="File" name="ownFile" fileName="c:tempnlog-own-${shortdate}.log"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
<target xsi:type="Null" name="blackhole" />
</targets>
<rules>
<!--All logs,including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<!--Skip Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
<logger name="*" minlevel="Trace" writeTo="ownFile" />
</rules>
</nlog>
“nlog-own-2016-02-14.log”包含:
干杯, 朱利安(NLog) 编辑:更新为NLog.Web.AspNetCore 4.3 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC应用程序的WatiN最佳实践/经验法
- asp.net-mvc – 为ASP.NET MVC Action Links添加rel和title
- ASP.net MVC ValidationSummary总是被渲染
- asp.net – 初学者指南,了解如何在Visual Studio中使用Subv
- asp.net-mvc – 如何在ASP.net MVC 4 RouteConfig.cs中使用
- ASP.NET MVC图像上传存储位置(db vs filesystem)
- asp.net-mvc-3 – 绑定到MVC3中的DropDownList
- asp.net – 我们可以在网页中使用多种形式吗?
- asp.net-mvc – 允许asp.net mvc 2控制器名称的URL中的连字
- asp.net-mvc-2 – 什么时候使用View()与RedirectToAction
- 转:[WebServices]介绍
- asp.net-mvc-3 – Asp.net Mvc3 webgrid和分页
- asp.net – 在IE9中HTML表格无法正确呈现
- C# 快速高效率复制对象另一种方式 表达式树
- asp.net-mvc – 更改ASP.NET MVC 3中的默认Model
- asp.net-mvc – ASP.NET Azure 400错误请求不返回
- asp.net-mvc – 文件输入MVC 3所需的客户端验证
- asp.net – 如何添加jQuery UI按钮图标到输入按钮
- asp.net – IIS URL Rewrite:添加除.html和.asp
- asp.net – ModalPopupExtender和验证问题
