Относительные пути к файлу лога в log4net
Удобная библиотека log4net позволяет направлять сообщения логов в разные хранилища-получатели: в текстовые файлы, в Event Log Windows, в СУБД и т.п.
Один из т.н. Appender'ов (в терминологии log4net) — это текстовый файл с поддержкой ротации по размеру. Однако, для применения в ASP.NET-проектах есть одно неудобство — нужно указывать полный путь к файлу лога.
Чтобы обеспечить поддержку относительных путей можно унаследовать класс RollingFileAppender.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using log4net;
using System.Web.Hosting;
namespace CrispStudio.Logging
{
public class AspNetRollingFileAppender : log4net.Appender.RollingFileAppender
{
public override string File
{
get { return base.File; }
set { base.File = HostingEnvironment.MapPath(value); }
}
}
}
...и использовать класс при конфигурации:
<log4net> <appender name="CrispStudioTextLog" type="CrispStudio.Logging.AspNetRollingFileAppender"> <file value="~\App_Data\WebSite.log"/> <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> <appendToFile value="true"/> <maximumFileSize value="10MB"/> <maxSizeRollBackups value="10"/> <staticLogFileName value="true"/> <rollingStyle value="Size"/> </appender> ... </log4net>
