- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我的 asp.net core 应用程序添加 NLog。所以我完全按照这里的描述配置它https://github.com/NLog/NLog.Extensions.Logging 。我还添加了 https://github.com/NLog/NLog.Web也有默认配置。到目前为止一切顺利,一切都按预期进行。
现在我想将日志文件存储在示例 c:\temp\nlog-own-${shortdate}.log
中指定的编码文件夹中,而不是存储在取决于当前项目的文件夹中。在我之前的 ASP.NET 项目中,我使用了类似 ${basedir}\App_Data\Logs\nlog-own-${shortdate}.log
的内容。现在它也可以工作,但将文件放在 bin 目录中。但我想配置将这些文件放置在 IHostingEnvironment.ContentRootPath
文件夹中。基本上我想要这样的东西
private static Logger Logger = LogManager.GetCurrentClassLogger();
private IHostingEnvironment _HostingEnvironment;
public UserController(IHostingEnvironment env)
{
_HostingEnvironment = env;
}
public IActionResult Index()
{
var fileTarget = Logger.Factory.Configuration.FindTargetByName<NLog.Targets.FileTarget>("ownFile-web");
fileTarget.FileName = new SimpleLayout(
@"${basedir}\App_Data\Logs\nlog-own-${shortdate}.log"
.Replace("${basedir}", _HostingEnvironment.ContentRootPath)
);
Logger.Info("Index page says hello");
return View(new UserListArgs());
}
但以更优雅的方式。
最佳答案
类似这样的事情:
更新:在 NLog 4.4 中,这可以在一行中完成(LayoutRenderer.Register
)
自 NLog 4.4
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
//add NLog to ASP.NET Core
loggerFactory.AddNLog();
//needed for non-NETSTANDARD platforms: configure nlog.config in your project root
env.ConfigureNLog("nlog.config");
LayoutRenderer.Register("basedir", (logEvent) => env.ContentRootPath);
...
}
NLog 4.4 之前
[LayoutRenderer("basedir")]
public class AspNetCoreBaseDirLayoutRenderer : LayoutRenderer
{
public static IHostingEnvironment Env {get;set;}
protected override void Append(StringBuilder builder, LogEventInfo logEvent)
{
builder.Append(env.ContentRootPath);
}
}
注册:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//add NLog to ASP.NET Core
loggerFactory.AddNLog();
//needed for non-NETSTANDARD platforms: configure nlog.config in your project root
env.ConfigureNLog("nlog.config");
...
//overwrite ${basedir}
AspNetCoreBaseDirLayoutRenderer.Env = env;
ConfigurationItemFactory.Default.LayoutRenderers
.RegisterDefinition("basedir", typeof(AspNetCoreBaseDirLayoutRenderer ));
...
关于asp.net-core - 如何配置 nlog 以在 FileTarget 中使用 IHostingEnvironment.ContentRootPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38952948/
在我的 Azure Service Fabric Web API 项目中,我可以在我的 Api.cs 类中使用以下代码将我的 appsettings.json 文件添加到我的配置中: prot
当我将 Dot Net Core Web 应用程序部署到 Azure 时,Environment.ContentRootPath 变量设置为 [myproject]/wwwroot。然而,在开发中,它
我有一个 ASP.NET Core 3.0 项目。我正在从本地数据文件夹(在项目的根目录中)(在 wwwroot 文件夹之外!)读取一些数据。在本地运行时,我可以使用“IWebHostEnvironm
我有一个 ASP.NET Core 3.0 项目。我正在从本地数据文件夹(在项目的根目录中)(在 wwwroot 文件夹之外!)读取一些数据。在本地运行时,我可以使用“IWebHostEnvironm
我有一个具有以下配置的 ASP.NET 核心应用程序: public Startup(IHostingEnvironment hostingEnvironment) { _configurat
我有一个 .NET Core 类库,它是多个 Web 应用程序的数据访问层。我正在使用 Entity Framework Core 1.1,但我在通过 PMC 进行迁移时遇到了问题。我的初始迁移成功,
我有一个 ASP.NET Core 项目,其中包含一些简单的 Razor 页面和一个 Web API Controller 。 我正在使用 Clean Architecture作为起点。我重命名了项目
我正在为 .NET 核心(net46 框架)创建 xunit 测试,但在获取应用程序的根路径时遇到问题,因此我可以找到 appsettings.json 等内容。 有人可以解释我如何实现以下目标之一:
我正在尝试为我的 asp.net core 应用程序添加 NLog。所以我完全按照这里的描述配置它https://github.com/NLog/NLog.Extensions.Logging 。我还
我正在尝试为我的 asp.net core 应用程序添加 NLog。所以我完全按照这里的描述配置它https://github.com/NLog/NLog.Extensions.Logging 。我还
我是一名优秀的程序员,十分优秀!