当前位置:网站首页>.NET Core 日志系统
.NET Core 日志系统
2022-07-02 11:55:00 【DotNeter-Hpf】
文章目录
1.日志级别
Trace < Debug < Information < Warning < Error < Critical
- Critical:生死攸关
- Error:无法处理的错误信息
- Warning:不会中断应用程序,但仍需调查的警告错误
- Information:程序运行时输出重要信息,通常具有长期价值
- Debug:开发、调试过程中,短期有用的消息
- Trace:最低的日志级别,我没用过
1.1 控制台程序使用
引用包
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging.Console
Program.cs代码(.NET6创建的控制台程序)
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
ServiceCollection services = new();
services.AddLogging(logBulider => {
logBulider.AddConsole();
logBulider.SetMinimumLevel(LogLevel.Debug); //设置允许日志输出的最低级别为Debug
});
services.AddScoped<Test1>();
using (var sp = services.BuildServiceProvider())
{
var test1= sp.GetRequiredService<Test1>();
test1.Test();
}
* 新建Test1.cs类并写入代码
public class Test1
{
private readonly ILogger<Test1> logger;
public Test1(ILogger<Test1> _logger)
{
this.logger = _logger;
}
public void Test()
{
logger.LogDebug("开始执行数据库同步");
logger.LogDebug("连接数据库成功");
logger.LogWarning("查找数据失败,重试第一次");
logger.LogWarning("查找数据失败,重试第二次");
logger.LogError("查找数据最终失败");
}
}
运行效果
2.记录到Windows下的事件查看器中
注意:除非程序只部署到Windows系统下,否则不建议这样写日志
在标题1中稍作修改
引用包 Microsoft.Extensions.Logging.EventLog
新增代码 logBulider.AddEventLog();
运行效果
3.使用NLog写入文本文件(ASP.NET Core 案例)
nlog.config
官方提供的配置文件Program.cs
builder.Services.AddLogging(logBulider => {
logBulider.AddConsole();
//logBulider.AddEventLog();
logBulider.AddNLog();
logBulider.SetMinimumLevel(LogLevel.Debug); //设置允许日志输出的最低级别Debug
});
控制器
public class WeatherForecastController : ControllerBase
{
private readonly IConfiguration config;
public TestController(ILogger<TestController> logger)
{
this.logger = logger;
}
[HttpPost]
public JsonResult TestLog()
{
logger.LogInformation("测试Information");
logger.LogDebug("测试Debug");
logger.LogError("测试Error");
return new JsonResult("");
}
}
- 引用包 NLog.Extensions.Logging
- 注意nlog.config 必须小写,如果大写并部署到Linux系统,会报错
- nlog.config 文件属性 设置为
始终复制
- 项目添加代码
logBulider.AddNLog();
3.1 配置文件的解读
internalLogFile=“c:\temp\internal-nlog-AspNetCore.txt” ,如果去掉 c:\temp\ 就是默认往系统根路径写入
rules 的匹配规则是由上而下,只要符合条件,就会写入日志
rules 中的 name 属性,是由
namespace+类名
组成rules name=“Microsoft.*” : 匹配 Microsoft 开头的
rules logger writeTo=“lifetimeConsole, ownFile-web” 可以匹配多个
rules logger final=true 属性:一旦匹配到,就不会再往下匹配
4.使用NLog写入数据库(ASP.NET Core 案例)
nlog.config 配置
<targets>
<target name="database" xsi:type="Database" connectionstring="Server=.;Initial Catalog=cxlprod;Persist Security Info=False;User ID=DemoDB;Password=sa2008;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;">
<commandText>
insert into NLogInfo([Date],[origin],[Level],[Message]) values (DATEADD(HOUR, 8, GETDATE()), @origin, @logLevel, @message);
</commandText>
日志来源
<parameter name="@origin" layout="${callsite}" />
日志等级
<parameter name="@logLevel" layout="${level}" />
日志消息
<parameter name="@message" layout="${message}" />
</target>
</targets>
<rules>
<logger name="*" writeTo="database" />
</rules>
边栏推荐
- Kityformula editor configure font size and spacing
- [Space & single cellomics] phase 1: single cell binding space transcriptome research PDAC tumor microenvironment
- [apipost] tutorial
- 【题解】Educational Codeforces Round 82
- socket(套接字)与socket地址
- PTA题库 ===>复数四则运算,一帮一,考试座位号(7-73)
- LeetCode 2310. 个位数字为 K 的整数之和
- LeetCode 2320. 统计放置房子的方式数
- Fabric. JS manual bold text iText
- 【C语言】详解指针的初阶和进阶以及注意点(1)
猜你喜欢
随机推荐
Bit by bit of OpenCV calling USB camera
871. Minimum refueling times: simple priority queue (heap) greedy question
taobao.trade.get( 获取单笔交易的部分信息),淘宝店铺订单接口,淘宝oAuth2.0接口,淘宝R2接口代码对接分享
【无标题】LeetCode 2321. 拼接数组的最大分数
用户隐私协议有些汉字编码不规范导致网页显示乱码,需要统一找出来处理一下
实用调试技巧
实现一个多进程并发的服务器
LeetCode 2310. The number of digits is the sum of integers of K
LeetCode 2320. Count the number of ways to place the house
1、编辑利器vim
记一次报错解决经历依赖重复
Reuse and distribution
LeetCode_滑动窗口_中等_395.至少有 K 个重复字符的最长子串
LeetCode_字符串_简单_412.Fizz Buzz
检查密码
富文本编辑器添加矢量公式(MathType for TinyMCE ,可视化添加)
buuctf-pwn write-ups (7)
Fabric. JS free drawing ellipse
【题解】Educational Codeforces Round 82
2. Const pointer