Как автоматически удалять логи в ASP.NET 5?
У меня есть веб-приложение, использующее ASP.NET 5. Я только знакомлюсь с новыми встроенными механизмами регистрации (Microsoft.Extensions.Logging
).
До этого я использовал NLog в других приложениях, и в NLog есть механизм автоматического удаления файлов журнала по истечении определенного периода времени. Можно ли вообще воспроизвести это поведение в ASP.NET, встроенном в журналирование? Например, удалить файлы журнала старше 7 дней?
Я не смог найти документацию по этому вопросу в другом месте...
1 ответ
Мы все еще можем использовать 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}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="demo-file" />
</rules>
</nlog>