Serilog中的结构化日志支持非常好,而且配置简便。我能够比其他任何人更轻松地启动和运行Seirlog。Serilog中的日志可以发送到很多目的地。Serilog称这些东西为“接收器”
在大多数情况下,Serilog的延迟是NLog的延迟的一半,吞吐量是其两倍。测试链接
使用NLog
第一步,项目中引入NLog.Web.AspNetCore
第二步、创建nlog.config文件(详细的配置说明请参照NLog官方文档),配置好日志参数。并将改文件设置成【始终复制】或者【如果较新则复制】
nlog.config文件示例
具体的配置说明 可以参考 https://www.cjavapy.com/article/183/
<?xml version="1.0" encoding="utf-8"?><nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" internalLogLevel="Info"><!-- 启用.net core的核心布局渲染器 --><extensions><add assembly="NLog.Web.AspNetCore" ></extensions><!-- 写入日志的目标配置 archiveAboveSize="102400" maxArchiveDays="60" --><targets><!-- 调试 --><target xsi:type="File" name="debug" fileName="../logs/debug-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" ><!-- 警告 --><target xsi:type="File" name="warn" fileName="../logs/warn-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" ><!-- 错误 --><target xsi:type="File" name="error" fileName="../logs/error-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" ><!-- 控制台 --><target xsi:type="Console" name="console" layout="${message}" ></targets><!-- 映射规则 --><rules><!-- 调试 --><logger name="*" minlevel="Trace" maxlevel="Debug" writeTo="debug" ><!--<logger name="*" minlevel="Trace" writeTo="console" >--><!-- 警告 --><logger name="*" minlevel="Info" maxlevel="Warn" writeTo="warn" ><!-- 错误 --><logger name="*" minlevel="Error" maxlevel="Fatal" writeTo="error" ><!--跳过不重要的微软日志--><logger name="Microsoft.*" maxlevel="Info" final="true" ></rules></nlog>
第三步、代码中注入NLog
只需修改program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();}).UseNLog();// 注入nlog
四. 控制器里使用
/// <summary>/// 日志/// </summary>private readonly ILogger<DemoController> _logger;/// <summary>/// 构造函数/// </summary>/// <param name="logger"></param>public DemoController(ILogger<DemoController> logger){_logger = logger;}public IActionResult Test(){_logger.LogError("我是日志内容");return Ok("ok");}
使用log4net
第一步、在对应项目中引入Microsoft.Extensions.Logging.Log4Net.AspNetCore
第二步、创建log4net.config文件(详细的配置说明请参照其官方文档),配置好日志参数。并将改文件设置成【始终复制】或者【如果较新则复制】
log4net.config文件内容示例
<?xml version="1.0" encoding="utf-8"?><log4net><!-- Define some output appenders --><appender name="rollingAppender" type="log4net.Appender.RollingFileAppender"><file value="log\log.txt" ><!--追加日志内容--><appendToFile value="true" ><!--防止多线程时不能写Log,官方说线程非安全--><lockingModel type="log4net.Appender.FileAppender+MinimalLock" ><!--可以为:Once|Size|Date|Composite--><!--Composite为Size和Date的组合--><rollingStyle value="Composite" ><!--当备份文件时,为文件名加的后缀--><datePattern value="yyyyMMdd.txt" ><!--日志最大个数,都是最新的--><!--rollingStyle节点为Size时,只能有value个日志--><!--rollingStyle节点为Composite时,每天有value个日志--><maxSizeRollBackups value="20" ><!--可用的单位:KB|MB|GB--><maximumFileSize value="5MB" ><!--置为true,当前最新日志文件名永远为file节中的名字--><staticLogFileName value="true" /><!--输出级别在INFO和ERROR之间的日志--><!--过滤级别 FATAL > ERROR > WARN > INFO > DEBUG--><filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="WARN" /><param name="LevelMax" value="FATAL" /></filter><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/></layout></appender><root><priority value="ALL"/><level value="ALL"/><appender-ref ref="rollingAppender" /></root></log4net>
第三步、代码注入log4net
修改program.cs代码注入log4net
public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureLogging((context, logBuilder) =>{logBuilder.AddFilter("System", LogLevel.Warning);logBuilder.AddFilter("Microsoft", LogLevel.Warning);logBuilder.AddLog4Net(); //注入log4net}).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();});
再修改startup.cs

public void Configure(IApplicationBuilder app, IWebHostEnvironment env , ILoggerFactory loggerFactory){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}// app.UseHttpsRedirection();#region 添加log4netloggerFactory.AddLog4Net();#endregionapp.UseRouting();......}
测试
[Route("api/[controller]")][ApiController]public class TestLoggerController : ControllerBase{private readonly ILogger<TestLoggerController> _logger;public TestLoggerController(ILogger<TestLoggerController> logger){this._logger = logger;}[HttpPost("testWriteLogException")]public void TestWriteLogException(){_logger.LogError("这是一个简单日志测试");}}

使用Serilog
添加 Nuget 引用
Serilog.AspNetCore日志包主体
Serilog.Sinks.RollingFile 将日志写入文件
日志记录器的四种级别(Log4j)的要求
error 错误信息(较严重)
warn 警告级别的信息(不严重)
info 需要持续输出的信息(无论调试还是发布状态)
debug 需要在调试过程中输出的信息,但发布后是不需要的(当然发布后,也是看不到的)
级别由上自下依次降低
appsettings.json 中添加 Serilog 节点

{"Serilog": {"WriteTo": [{"Name": "RollingFile","Args": {"pathFormat": "logs\\{Date}.txt","RestrictedToMinimumLevel": "Warning"}},{"Name": "Console"}],"MinimumLevel": {"Default": "Debug","Override": {"Microsoft": "Information","System": "Information"}}},}
简单说明下配置文件的意思:
将日志写入RollingFile(文件)和Console(控制台)。
RollingFile 的具体配置:记录文件到 根目录/logs/{日期}.txt 文件内,每天记录一个文件,并且只记录 Warning 及其以上的日志;
默认日志级别记录 Debug 及其以上的日志。
如果日志包含 Microsoft System ,只记录级别为 Information 及以上的日志。
修改 program.cs,注册 Serilog

public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();}).UseSerilog((context, configure) =>{configure.ReadFrom.Configuration(context.Configuration);});简单配置完成,现在可以在项目中方便的使用 Serilog 了。复制代码private readonly ILogger<HomeController> _logger;public HomeController(ILogger<HomeController> logger){_logger = logger;}public IActionResult Index(){_logger.LogError("Error 测试");return View();}
更多详情
https://www.cnblogs.com/diwu0510/p/12828519.html
使用Elmah
这个使用超级简单
添加ElmahCore的NuGet包

注册Elmah服务
services.AddElmah(); //默认配置
3.配置路径,默认配置下:日志在/Elmah路径,如 http://localhost:1996/elmah
services.AddElmah(option =>{option.Path = "/elm"; //设置路径});
Elmah的记录方式有三种:
MemoryErrorLog、XmlFileErrorLog、SqlErrorLog,分别是内存记录,文件(XML)记录,数据库记录,以上为内存记录,劣势:一旦应用程序重启,之前记录的信息将会消失,适合测试用。文件记录:每一个报错日志信息生成一个xml文件,需要进行一定配置:
services.AddElmah<XmlFileErrorLog>(option => //使用泛型的重载Add方法{string path = Directory.GetParent(Environment.CurrentDirectory).Parent.Parent.FullName;option.Path = "/elm";option.LogPath = path; //设置存放文件的路径});
出处1:https://www.cnblogs.com/netlock/p/13359248.html
出处2:https://www.icode9.com/content-1-586132.html
版权申明:本文来源于网友收集或网友提供,仅供学习交流之用,如果有侵权,请转告版主或者留言,本公众号立即删除。
支持小微:
腾讯云 搞活动了?玩服务器的可以搞搞。就这几天时间。
轻量 1C2G6M 60GB SSD盘297元/3年
链接:https://curl.qcloud.com/bR8ycXZa
右下角,您点一下在看图片
小微工资涨1毛
商务合作QQ:185601686





