下面是使用 Log4net 记录 C# 日志的完整攻略:
步骤1:安装Log4net NuGet包
在 Visual Studio 中打开项目,右键单击解决方案,选择“管理NuGet包”,搜索 “log4net”,在搜索结果中选择“log4net”并安装。安装后会在项目文件夹中生成一个“packages”文件夹,其中包含log4net的DLL文件。
步骤2:添加Log4net配置文件
在项目根目录中新建一个名为“log4net.config”的文件,用于配置Log4net。如下所示:
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件路径和名称(最后的.log可以不写)-->
<file value="logs/MyLogFile"/>
<!--日志文件会自动以日期扩展名,如"MyLogFile2018-12-17.log"-->
<datePattern value="yyyy-MM-dd'.log'"/>
<appendToFile value="true"/>
<!--只记录比此级别更严重的日志-->
<threshold value="Debug"/>
<rollingStyle value="Date"/>
<!--最大备份文件数-->
<maxSizeRollBackups value="10"/>
<maximumFileSize value="50MB"/>
<staticLogFileName value="false"/>
<!--日志记录格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%n"/>
</layout>
</appender>
<!--定义logger,一个logger表示一个类或者命名空间的日志记录-->
<logger name="MyLogger">
<level value="ALL"/>
<appender-ref ref="RollingFileAppender"/>
</logger>
</log4net>
<appender>
元素定义日志输出,这里我们使用了 RollingFileAppender,即按日期滚动记录到文件中。<layout>
元素定义了输出格式,这里是使用了 PatternLayout,可以自定义输出格式。<logger>
元素定义了 MyLogger 这个命名空间的日志记录,它会将日志输出到上面定义的 RollingFileAppender 中。
步骤3:配置Log4net
在AssemblyInfo.cs文件中添加一行代码,告诉Log4net使用刚才添加的配置文件:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
“Watch”参数表示如果日志配置文件被修改了,则重新读取。如果您不想让其重新读取的话,Watch的值可以为false。
步骤4:在代码中使用Log4net
在需要记录日志的类中添加以下代码:
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
logger.Info("Info message");
logger.Debug("Debug message");
- 在类型前获取logger对象。
- 使用 logger 对象记录消息。在这个例子中,我们记录了一个“Info”级别的消息和一个“Debug”级别的消息。
示例1,假设您想在控制台应用程序中使用Log4net记录日志。在Program.cs文件中添加以下代码:
using System;
namespace ConsoleAppExample
{
class Program
{
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
static void Main(string[] args)
{
logger.Info("Info Message");
try
{
int a = 0;
int b = 1 / a;
}
catch(Exception e)
{
logger.Error("Error Message", e);
}
Console.ReadKey();
logger.Warn("Warn Message");
logger.Error("Error Message");
logger.Fatal("Fatal Message");
}
}
}
首先,获取logger对象。在Main方法中,输出一个“Info”级别的消息,然后捕获一个除以0的异常,输出一个“Error”级别的消息。然后,在Console.ReadKey()后输出3个不同级别的消息。
示例2,假设你是 ASP.NET MVC 项目的开发人员。在HomeController.cs文件中添加以下代码:
using System.Web.Mvc;
namespace WebApplicationExample.Controllers
{
public class HomeController : Controller
{
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public ActionResult Index()
{
logger.Info("Info Message");
try
{
int a = 0;
int b = 1 / a;
}
catch (System.Exception e)
{
logger.Error("Error Message", e);
}
return View();
}
}
}
获取logger对象,并在Index()方法中输出一个“Info”级别的日志消息,然后捕获一个除以0的异常并将其作为@e参数传递给Error()方法,在Error日志消息中输出错误消息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用Log4.net记录日志文件 - Python技术站