我有一个使用ASP.NET 5的web应用程序,我正在熟悉新的内置日志机制(
Microsoft.Extensions.Logging
)。
在此之前,我在其他应用程序中使用了NLog,而NLog有一种机制可以在一段时间后自动删除日志文件。在日志中内置的ASP.NET中有任何方法复制这种行为吗?例如,删除超过7天的日志文件?
我在其他地方找不到文件.
发布于 2016-03-18 23:01:34
我们仍然可以使用NLog。 ASP.NET日志存储库说 :
社区项目调整Microsoft.Extensions.Logging以适应不同后端的使用。
其中包括NLog。下面是 NLog - NLog库的提供程序 ,下面是一个简化的演示。你可以为了你的目的而调整它。
目录结构
MyProject
nlog.config
project.json
Startup.cs
Startup.cs
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.Extensions.Logging;
using NLog.Web;
using NLog.Extensions.Logging;
public class Startup
public void Configure(
IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory)
//add NLog to aspnet5
loggerFactory.AddNLog();
//add NLog.Web (only needed if NLog.Web.ASPNET5 is needed)
app.AddNLogWeb();
//configure nlog.config in your project root
env.ConfigureNLog("./MyProject/nlog.config");
// we can also do this from a controller
// if we inject ILoggerFactory
var logger = loggerFactory.CreateLogger("NLog Demo");
logger.LogInformation("Hello from NLog");
}
project.json
{
"dependencies": {
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"NLog.Extensions.Logging": "1.0.0-rc1-final-2016-02-06",
"NLog.Web.ASPNET5": "4.2.1"
"frameworks": {
"dnx451": {}
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
}
nlog.config
<?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"
archiveEvery="Minute"
archiveNumbering="Rolling"
maxArchiveFiles="1">
<extensions>
<add assembly="NLog.Web.ASPNET5"/>
</extensions>
<targets>
<target xsi:type="File" name="demo-file"
fileName="c:\temp\demo-file-${shortdate}.txt"
layout="${message}" />