以下是关于Log4Net 日志配置的完整攻略。
Log4Net 简介
Log4Net 是由 Apache 创建并维护的一个基于 .Net 平台的开源日志框架,支持多种输出目标、日志格式和日志级别,可以帮助开发者更加便捷地管理应用程序的日志。
Log4Net 的配置
配置文件
首先需要在项目中引入 Log4Net 的相关库文件。然后,在项目的配置文件(如 app.config 或 web.config)中添加配置信息。下面是一个简单的 Log4Net 配置示例:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<file value="logs/" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
</configuration>
上面的配置通过 RollingFileAppender 将日志输出到指定目录下的文件中,同时设置了最大文件大小和备份数量等参数,更多配置信息可以参考 Log4Net 的 官方文档。
代码中使用 Log4Net
在代码中使用 Log4Net 需要先在程序启动时进行初始化:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "app.config", Watch = true)]
然后在需要记录日志的地方,可以通过以下代码来记录不同级别的日志:
ILog logger = LogManager.GetLogger(typeof(Program));
logger.Debug("Debug message.");
logger.Info("Info message.");
logger.Warn("Warning message.");
logger.Error("Error message.");
logger.Fatal("Fatal message.");
以上代码就会按照在配置文件中设置的格式和输出目标来记录日志信息了。
示例一:ASP.NET Web API 中使用 Log4Net
下面是一个在 ASP.NET Web API 中使用 Log4Net 的示例。首先,在项目中添加 Log4Net 的相关引用(如 log4net.dll)并在 web.config 文件中添加 Log4Net 的配置信息。代码如下:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<file value="logs/" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.6.1"/>
<httpRuntime targetFramework="4.6.1"/>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
然后,在 Global.asax.cs 文件中添加 Log4Net 的初始化代码和全局异常处理代码:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "web.config", Watch = true)]
protected void Application_Error(object sender, EventArgs e)
{
// 判断是否存在未处理的异常
Exception ex = Server.GetLastError();
if (ex != null)
{
// 记录异常信息到日志
log4net.ILog logger = log4net.LogManager.GetLogger(this.GetType());
logger.Error("出现异常", ex);
}
}
最后在需要记录日志的地方调用 LogManager.GetLogger 方法来获取日志实例并记录日志即可:
public class ValuesController : ApiController
{
private static readonly ILog log = LogManager.GetLogger(typeof(ValuesController));
// GET api/values
public IEnumerable<string> Get()
{
log.Info("Get 方法被调用");
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
log.InfoFormat("Get 方法被调用,参数:{0}", id);
return "value";
}
// POST api/values
public void Post([FromBody]string value)
{
log.InfoFormat("Post 方法被调用,参数:{0}", value);
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
log.InfoFormat("Put 方法被调用,参数:{0},{1}", id, value);
}
// DELETE api/values/5
public void Delete(int id)
{
log.InfoFormat("Delete 方法被调用,参数:{0}", id);
}
}
示例二:使用 Log4Net 实现应用程序日志记录
下面是一个使用 Log4Net 实现应用程序日志记录的示例。首先,在项目中添加 Log4Net 的相关引用(如 log4net.dll)并在 App.config 文件中添加 Log4Net 的配置信息。代码如下:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<file value="logs/" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
</configuration>
然后,在代码中调用 LogManager.GetLogger 方法来获取日志实例并记录日志即可:
class Program
{
private static readonly ILog log = LogManager.GetLogger(typeof(Program));
static void Main(string[] args)
{
log.Info("应用程序启动");
try
{
// 模拟发生异常
throw new Exception("这是一个测试异常");
}
catch (Exception ex)
{
// 记录异常信息到日志
log.Error("执行出现异常", ex);
}
log.Info("应用程序结束");
}
}
结语
通过以上示例代码,可以看出 Log4Net 的日志记录和输出非常灵活,可以根据实际需求来灵活定制。同时,Log4Net 还提供了多种输出目标和格式,可以使开发者更加方便地查看和分析日志信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Log4Net 日志配置[附带源码下载] - Python技术站