依赖库
如题, 自然是依赖 log4net.
不过为了更好的在 ASP.NET Core 集成使用, 我们这里使用 Microsoft.Extensions.Logging.Log4Net.AspNetCore, 以便依赖注入使用.
项目中通过 NuGet 安装完成后, 我们看看依赖项:
同时在 *.csproj
文件中会多出相关的依赖项配置:
配置
依赖库下载安装完成后, 我们来如何使用呢?
我们在 Startup.cs
中补充如下代码:
// Startup.cs
using Microsoft.Extensions.Logging;
namespace DncZeus.Api
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// 日志
services.AddLogging(config =>
{
config.AddLog4Net();
});
}
}
}
这个时候我们直接运行项目, 会发现出现如下报错:
这是因为默认的 AddLog4Net()
方法会从当前目录读取 log4net.config
配置文件内的信息.
所以我们还需要一个 log4net.config
配置文件.
项目内新建一个 log4net.config
配置文件, 并调整属性为 始终复制
, 这样每次编译/发布时会自动拷贝到最终生成目录下, 不用我们手搓操作.
同时调整 log4net.config
配置文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<log4net debug="false">
<root>
<level value="ALL" />
<appender-ref ref="DebugLogAppender" />
<appender-ref ref="InfoLogAppender" />
<appender-ref ref="WarnLogAppender" />
<appender-ref ref="ErrorLogAppender" />
</root>
<appender name="DebugLogAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value=".\\logs\\" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="200KB" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd"-Debug.txt"" />
<param name="RollingStyle" value="Composite" />
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="DEBUG" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<appender name="InfoLogAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value=".\\logs\\" />
<param name="AppendToFile" value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaximumFileSize" value="5000KB" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd"-Info.txt"" />
<param name="CountDirection" value="1" />
<param name="RollingStyle" value="Composite" />
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<appender name="WarnLogAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value=".\\logs\\" />
<param name="AppendToFile" value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaximumFileSize" value="5000KB" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd"-Warning.txt"" />
<param name="CountDirection" value="1" />
<param name="RollingStyle" value="Composite" />
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN" />
<levelMax value="WARN" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<appender name="ErrorLogAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value=".\\logs\\" />
<param name="AppendToFile" value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaximumFileSize" value="5000KB" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd"-Error.txt"" />
<param name="RollingStyle" value="Composite" />
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
这个时候再运行项目就没什么问题了.
使用
配置可以了, 那么我们如何使用呢?
这里我们新建一个测试控制器 TestController.cs
, 并修改代码如下:
// TestController.cs
using DncZeus.Api.Extensions;
using DncZeus.Api.Models.Response;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
// For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace DncZeus.Api.Controllers
{
/// <summary>
/// 测试控制器
/// </summary>
[ApiController]
[Route("[controller]/[action]")]
public class TestController : Controller
{
private readonly ILogger _logger;
public TestController(ILogger<TestController> logger)
{
_logger = logger;
}
/// <summary>
/// 测试日志
/// </summary>
/// <returns></returns>
// GET: /<controller>/
public IActionResult Logger()
{
_logger.LogDebug(message: "LogDebug()...");
_logger.LogInformation(message: "LogInformation()...");
_logger.LogWarning(message: "LogWarning()...");
_logger.LogError(message: "LogError()...");
ResponseResultModel response = ResponseModelFactory.CreateResultInstance;
response.SetSuccess(message: "test logger success");
return Ok(value: response);
}
}
}
运行并访问 http://localhost:54321/test/logger
后
可以在 logs
目录下看到如下内容:
同理在其他控制器内也可以这样使用咯.
码完收工.
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册