一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - .Net Core項目如何添加日志功能詳解

.Net Core項目如何添加日志功能詳解

2020-05-29 15:35MicroHeart! ASP.NET教程

這篇文章主要給大家介紹了關于.Net Core項目如何添加日志功能的相關資料,日志功能是我們開發中經常需要用到的一個功能,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧

一、微軟內置的日志組件

在.Net Core中使用模板新建的Web Api項目時,會自動加入日志功能。只需要在控制器中注入ILogger就可以了。命名空間為:Microsoft.Extensions.Logging

.Net Core項目如何添加日志功能詳解

會發現只有Error被打印到了控制臺,Trace沒有被打印。那是因為在appsetting.json中配置了Logging>Console>Default的等級為Debug,日志的等級大于等于Debug才會輸出到控制臺。在這里說一下LogLevel:Trace<Debug<Information<Warning<Error<Critical<None

當打開appsettings.development.json文件你會發現跟appsettings.json配置不同。如下:

?
1
2
3
4
5
6
7
8
9
10
{
 "Logging": {
 "IncludeScopes": false,
 "LogLevel": {
 "Default": "Debug",
 "System": "Information",
 "Microsoft": "Information"
 }
 }
}

例如:

"System": "Information" 表示命名空間以System開頭的類中且日志等級大于等于Information才會輸出到控制臺。

"Default": "Debug" 表示除以System和Microsoft開頭的命名空間日志等級大約等于Debug才會輸出到控制臺。

這里說明一下到底是在什么時候,讀取了appsettings.json中的配置了了? 其實是在Program中 WebHost.CreateDefaultBuilder(arge)

打開源碼發現

.Net Core項目如何添加日志功能詳解

當然我們可以不用微軟提供的默認配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Program
 {
 public static void Main(string[] args)
 {
  //指定配置文件路徑
  var configBuilder = new ConfigurationBuilder()
     .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile($"appsettings.json", true, true)
    .AddJsonFile($"appsettings.{EnvironmentName.Development}.json", true, true);
 
  var config = configBuilder.Build();
  
  var host = new WebHostBuilder()
   .UseKestrel()
   .UseStartup<Startup>()
   .UseContentRoot(Directory.GetCurrentDirectory())
   .UseUrls(config["AppSettings:Url"])//設置啟動時的地址
   .Build();
  host.Run();
 }
 }

配置文件為:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
 "AppSettings": {
 "Url": "http://0.0.0.0:6000"
 },
 "Logging": {
 "IncludeScopes": false,
 "Debug": {
 "LogLevel": {
 "Default": "Info"
 }
 },
 "Console": {
 "LogLevel": {
 "Default": "Warning"
 }
 }
 }
}

StartUp為:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Startup
 {
 public IConfiguration Configuration { get; private set; }
 public Startup(IHostingEnvironment env)//在構造函數中注入 IHostingEnvironment
 {
  Configuration = new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile($"appsettings.json")
    .Build();
 }
 public void ConfigureServices(IServiceCollection services)
 {
  services.AddMvc();
 }
 
 public void Configure(IApplicationBuilder app,
  IHostingEnvironment env,
  ILoggerFactory loggerFactory)
 {
  if (env.IsDevelopment())
  {
  app.UseDeveloperExceptionPage();
  }
  //添加控制臺輸出
  loggerFactory.AddConsole(Configuration.GetSection("Logging"));
  loggerFactory.AddDebug();
 
  app.UseMvc();
 }
 }

但是微軟提供的內置的日志組件沒有實現將日志記錄到文件、數據庫上。下面介紹NLog

二、NLog

首先使用NuGet添加NLog,然后在Startup的Configure中添加以下代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public void Configure(IApplicationBuilder app,
  IHostingEnvironment env,
  ILoggerFactory loggerFactory)
 {
  if (env.IsDevelopment())
  {
  app.UseDeveloperExceptionPage();
  }
  //添加控制臺輸出
  loggerFactory.AddConsole(Configuration.GetSection("Logging"));
  loggerFactory.AddDebug();
 
  loggerFactory.AddNLog();//添加NLog
  NLog.LogManager.LoadConfiguration($@"{env.ContentRootPath}/nlog.config");//指定NLog的配置文件
 
  app.UseMvc();
 }

配置NLog的配置文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?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="Warn"
 internalLogFile="internal-nlog.txt">-->
 <targets>
 <target name="allfile" xsi:type="File" fileName="./logs/${shortdate}/all.log" layout="${longdate}|${message} ${exception}" />
 <target name="debugfile" xsi:type="File" fileName="./logs/${shortdate}/debug.log" layout="${longdate}|${message} ${exception}" />
 <target name="infofile" xsi:type="File" fileName="./logs/${shortdate}/info.log" layout="${longdate}|${message} ${exception}" />
 <target name="warnfile" xsi:type="File" fileName="./logs/${shortdate}/warn.log" layout="${longdate}|${message} ${exception}" />
 <target name="errorfile" xsi:type="File" fileName="./logs/${shortdate}/error.log" layout="${longdate}|${message} ${exception}" />
 <target name="fatalfile" xsi:type="File" fileName="./logs/${shortdate}/fatal.log" layout="${longdate}|${message} ${exception}" />
   <target name="network" xsi:type="Network" address="udp://chinacloudapp.cn:4561" layout="Development|${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}" />//將日志通過網絡輸出
 <target name="debuge" xsi:type="Console"/>//將日志輸出到控制臺
 </targets>
 
 <rules>
 <logger name="*" minlevel="Trace" writeTo="allfile,debuge" />
 <logger name="*" level="Info" writeTo="infofile" />
 <logger name="*" level="debug" writeTo="debugfile" />
 <logger name="*" level="warn" writeTo="warnfile" />
 <logger name="*" level="error" writeTo="errorfile" />
 <logger name="*" level="fatal" writeTo="fatalfile" />
 
 </rules>
</nlog>

xsi:type=“File”存儲日志為文件格式 ,

xsi:type="Console" 表示為控制臺輸出。

fileName="./logs/${shortdate}/all.log" 表示存儲文件路徑。

layout="${longdate}|${message} ${exception}" 表示為文件內容的布局。

rules標簽下面表示,對應等級的日志寫到對應target中。如

<logger name="*" level="Info" writeTo="infofile" /> 表示等級為Info的日志寫到target名稱為infofile的文件中。

<logger name="*" minlevel="Trace" writeTo="allfile,debuge" /> 表示日志等級大于Trace的日志寫到target名稱為allfile和debuge(控制臺輸出)中。

同樣在使用的時候,只需要在用到的地方注入ILogger,就可以使用了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://www.cnblogs.com/MicroHeart/p/9268596.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 人成午夜免费大片在线观看 | 91高清国产视频 | 日本亚欧乱色视频在线观看 | chinesegay黑袜玩奴 | www.俺去| 99视频久久| 五月天视频网 | 久久久久国产一级毛片高清片 | 婷婷色网 | 欧美一级在线全免费 | 国产福利视频一区二区微拍视频 | 我和老丈洗澡同性 | 男生操女生动态图 | yy6080午夜国产免费福利 | 视频大全在线观看网址 | 二区三区在线观看 | 美女的让男人桶爽30分钟的 | 久久亚洲精选 | 91麻豆精品国产 | 国产亚洲成归v人片在线观看 | 欧美亚洲欧美 | 秋霞黄色片 | 男人天堂网www| 免费视频一区二区 | 91高清免费国产自产 | 洗濯屋H纯肉动漫在线观看 武侠艳妇屈辱的张开双腿 午夜在线观看免费观看 视频 | a天堂在线视频 | 国产成人影院 | 欧美亚洲桃花综合 | 国产爱啪啪 | 夫承子液by免费阅读 | 欧美日本一道高清免费3区 欧美人做人爱a全程免费 | 99在线视频精品 | 波多野结衣久久国产精品 | 性满足久久久久久久久 | 5g影院天天影院天天爽影院网站 | 3d动漫美女物被遭强视频 | 国产成人精品s8sp视频 | 日本哺乳期网站xxxx | 亚洲爱v | 性做久久久久免费观看 |