我有现有的MVC5代码,我需要集成日志记录。任何人都可以让我知道最好的集成方法,而无需在现有代码中进行大量修改。我有一种方法,我正在考虑使用MVC动作过滤器进行日志记录和DI注入记录器。关于其他组合的任何想法?
答案 0 :(得分:1)
您可以选择Log4Net库来集成日志记录,并使用Global.asax Application_Error事件在单个位置记录所有应用程序错误。因此,不需要在现有代码中进行批量修改。
分步指南
步骤1(获取Log4Net)
首先,您需要下载可从此处下载的Log4Net库:
https://logging.apache.org/log4net/download_log4net.cgi
或者您也可以选择nuget在现有应用程序中下载Log4Net Package。要执行此操作,请在“程序包管理器控制台”中运行以下命令,您可以在工具 - >中找到它。 Visual Studio中的Nuget包管理器。
步骤2(添加Log4Net参考)
按照上面显示的任何方式下载Log4Net后,请确保项目参考中包含Log4Net dll。如果没有添加,请添加对log4net dll的引用。
步骤3(配置Log4Net)
在项目中打开AssemblyInfo.cs - >属性文件夹并添加到下面的行
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
这将导致Log4Net查找配置文件,并将监视配置文件的更改。
步骤4(配置记录方法)
现在在web.config中指定Log4Net配置 在
下添加Log4Net的configSections条目<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
</configuration>
另外,添加日志文件的配置,这里我使用的是RollingFileAppender
<log4net>
<appender name="RollingErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\\Error\\" />
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
<datePattern value="'Error_'yyyyMMdd'.log'" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="5MB" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{dd-MMM-yyyy HH:mm:ss} [%thread] %-5level %file %line %M %logger [%property{NDC}] - %message%newline%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingErrorLogFileAppender" />
</root>
</log4net>
步骤5(捕获应用程序错误并记录它们)
您的log4net配置已完成。现在轮到捕获异常并将它们写入日志文件。如果要在单个位置捕获所有应用程序异常,可以使用Global.asax Application_Error事件。 在Global.asax
的顶部创建Log4Net变量private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
然后,在Global.asax中创建Application_Error事件,如下所示
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Response.Clear();
log.Error(exception.Message);
}
这将在应用程序根文件夹的“错误”文件夹中记录应用程序错误。
<强>参考强>
您可以在下面看到配置Log4Net的文档
https://logging.apache.org/log4net/release/manual/configuration.html
希望这会有所帮助!!
答案 1 :(得分:0)
NLog步骤
<强> 1。安装NLog.Config
使用示例配置(nlog.config)安装NLog
Install-Package NLog.Config
<强> 2。编辑配置
启用nlog.config中的规则
第3。记录例外
protected void Application_Error(object sender, EventArgs e)
{
var logger = LogManager.GetLogger("application");
Exception exception = Server.GetLastError();
Response.Clear();
logger.Error(exception, "error in application"); //logs full exception
}