日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

NLog NETCore 3.0 Porting

發(fā)布時(shí)間:2024/1/8 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NLog NETCore 3.0 Porting 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

NLog NETCore 3.0 Porting

這里簡(jiǎn)單整理一下,NETCore 3.0 + NLog工程移植過(guò)程中遇到的問(wèn)題。

Configuration

以下代碼才能編譯通過(guò)using Microsoft.Extensions.Hosting;

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory){ if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } }

使用 IWebHostEnvironment 替換原來(lái)的 IHostEnvironment

NLog 對(duì)應(yīng)

NLog簡(jiǎn)介

比較的詳細(xì)的可以參考:
https://blog.csdn.net/sd7o95o/article/details/81350638

StartUp

NetCore新版本需要使用新的ILoggingBuilder對(duì)Log進(jìn)行構(gòu)建,3.0以前是從ILoggerFactory開(kāi)始構(gòu)建。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) namespace Microsoft.Extensions.Logging{ // // An interface for configuring logging providers. public interface ILoggingBuilder { // // Gets the Microsoft.Extensions.DependencyInjection.IServiceCollection where Logging // services are configured. IServiceCollection Services { get; } }}[Obsolete("Instead use ILoggingBuilder.AddNLog() or IHostBuilder.UseNLog()")]public static ILoggerFactory AddNLog(this ILoggerFactory factory);

其中可以在

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging((ILoggingBuilder logBuilder) => { logBuilder.AddNLog(); logBuilder.AddConsole(); //logBuilder.confi NLog.LogManager.LoadConfiguration("mynlog.config"); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseUrls("http://*:5012"); webBuilder.UseStartup<Startup>(); });

可以看出,這里的Host是通用的了,不一定只用于WebApp,可以用到Console App的開(kāi)發(fā)中。
可以看到Log的配置文件應(yīng)該是沒(méi)有變化的,在Bin目錄下也可以到看如下的Log文件輸出

過(guò)時(shí)的IHostingEnvironment與IApplicationLifetime對(duì)象從.NET Core 3.0開(kāi)始,IHostingEnvironment與IApplicationLifetime已被標(biāo)記為“過(guò)時(shí)(Obsolete)”,這意味著在后續(xù)的.NET版本中,將不再繼續(xù)支持這兩個(gè)接口。如果我們?cè)赟tartup的Configure方法中使用了這兩個(gè)對(duì)象,那么最好也將這兩個(gè)接口分別替換為:IWebHostEnvironment和IHostApplicationLifetime。

Console App

支持3.0之后,通過(guò)以下構(gòu)建一個(gè)LoggerFactory 用于非WebApp的Log輸出。之前的方法在3.0中,沒(méi)有提供了AddConsole的定義了

var myfactory = new LoggerFactory(); myfactory.AddConsole(); myfactory.AddNLog();

分析IWebHostBuilder 與IHostBuilder的關(guān)系,兩者沒(méi)有繼承關(guān)系。兩者還有一定的相似之處,前者的保留更多的是為了兼容NetCore2.0 的構(gòu)建過(guò)程。

這里的Build是否應(yīng)該會(huì)刪除了呢?還是在內(nèi)部還會(huì)調(diào)用?

可以參考WebHost,寫(xiě)一個(gè)針對(duì)Console App的構(gòu)建封裝。

可以看到在Host Build的過(guò)程中已經(jīng)加入了很多的Service,如下有Config、Lifetime、IOptions、Logger等其中,比較重要是IHost也能獲取到。

如下代碼可以看到Log的配置過(guò)程,以及Service配置的地方,注意在這里是獲取不到對(duì)應(yīng)的Service的實(shí)例的。這里還沒(méi)有進(jìn)行構(gòu)建。要Build之后才能獲取到。

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging((ILoggingBuilder logBuilder) => { logBuilder.AddNLog(); logBuilder.AddConsole(); //logBuilder.confi NLog.LogManager.LoadConfiguration("mynlog.config"); }) .ConfigureAppConfiguration((contex, builder) => { //IHostApplicationLifetime }) .ConfigureServices(services => { Console.WriteLine("ConfigureServices In a Task"); var lifeTime = services.ToList().Find(a => typeof(IHostApplicationLifetime).IsAssignableFrom(a.ServiceType)) ?.ImplementationInstance as IHostApplicationLifetime;lifeTime?.ApplicationStarted.Register(() => { Task.Run(() => { Console.WriteLine("Hello World! In a Task"); }); }); }) .UseConsoleLifetime(); //.ConfigureWebHostDefaults(webBuilder => //{ // webBuilder.UseUrls("http://*:5012"); // webBuilder.UseStartup<Startup>(); / /});

Main函數(shù)里的代碼,Build后注冊(cè)一ApplicationStarted 消息,對(duì)應(yīng)也有Stopped的消息。這里可以封裝起來(lái)。

static void Main(string[] args) {CancellationToken cancellationToken = new CancellationToken();cancellationToken.Register(() => { Console.WriteLine("App Stopped"); });var dd = CreateHostBuilder(args).Build();var lifeTime = dd.Services.GetService(typeof(IHostApplicationLifetime)) as IHostApplicationLifetime; lifeTime.ApplicationStarted.Register(() => {Task.Run(() =>{console.WriteLine("Hello World! In a Task"); }); });dd.StartAsync(cancellationToken);Console.WriteLine("Hello World!"); }

NLog 配置文件(無(wú)變化)

<?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"> <!--define various log targets--> <targets> <!--write logs to file--> <target xsi:type="File" name="allfile" fileName="nlog-all-${shortdate}.log" layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" /><target xsi:type="File" name="ownFile-web" fileName="nlog-my-${shortdate}.log" layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" /> <target xsi:type="Null" name="blackhole" /> </targets> <rules> <!--All logs, including from Microsoft--> <logger name="*" minlevel="Trace" writeTo="allfile" /><!--Skip Microsoft logs and so log only own logs--> <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" /> <logger name="*" minlevel="Trace" writeTo="ownFile-web" /> </rules> </nlog>

參考

https://www.cnblogs.com/runningsmallguo/p/11617165.html

總結(jié)

以上是生活随笔為你收集整理的NLog NETCore 3.0 Porting的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产乱人伦精品一区二区 | 久久久久久久久久艹 | 男裸体无遮挡网站 | 精品人妻少妇一区二区 | 一区二区免费看 | 天海翼一二三区 | 欧美高清视频 | 青青精品| 天天看片天天操 | 日本亚洲免费 | 国产精品日韩在线 | 淫片网站| 性生交大片免费看l | 狠狠干天天 | 综合伊人av | 免费小视频在线观看 | 神马午夜激情 | 色婷婷av一区二区三区大白胸 | 性生活在线视频 | 日韩中文字幕精品 | 久久成人综合 | 伊人久久激情 | 久久久久久久久久久福利 | 麻豆成人免费 | 欧美八区 | 黑人巨大国产9丨视频 | 牛夜精品久久久久久久99黑人 | 欧美视频一区二区三区四区在线观看 | 亚洲成人看片 | 麻豆高清| 无法忍受在线观看 | 国产内射合集颜射 | 波多野结衣爱爱 | 久久久夜夜 | 视频在线免费 | 伊人77| 日本大尺度吃奶做爰久久久绯色 | 日日夜夜精品免费视频 | 精品免费一区二区三区 | 亚洲激情午夜 | 一级片aaaa| 午夜精品久久久久久久爽 | 河北彩花69xx精品一区 | 天天色视频 | 国产精品电影一区 | 亚洲精品大片 | 日韩和欧美一区二区 | 99热热久久 | 激情五月婷婷综合网 | 伊人77| 开心激情av | 久久久精品免费观看 | 国产精品一区二区入口九绯色 | 欧美骚视频 | 亚洲大成色 | 欧美在线国产 | 国产做受高潮 | 国产少妇自拍 | 中文字幕日日夜夜 | 国产精品白嫩极品美女 | 素人一区二区三区 | 麻豆av影视 | 黄网站免费大全入口 | 欧美日韩亚洲在线 | 日韩精品黄 | 国产精品a级 | 鲁一鲁啪一啪 | 人妻熟妇又伦精品视频a | 妞干网精品| 日本视频免费看 | 99热这里只有精品首页 | 国产精品久久久久久久久绿色 | 一女二男一黄一片 | 日日干天天爽 | 蜜桃成人在线 | 日韩视频在线观看一区二区三区 | 欧美成人一区在线 | 色屁屁一区二区三区视频 | 番号动态图 | 高跟91娇喘| 亚洲人成电影在线 | 蜜桃香蕉视频 | 免费激情 | 熟睡人妻被讨厌的公侵犯 | 1024国产在线| 欧美国产激情 | 精品黄色在线观看 | www香蕉| 色偷偷视频 | 国产精品s色 | 国产一区二区三区免费看 | 懂色av成人一区二区三区 | 亚洲精品欧美在线 | 国产99久久精品 | 91精品系列 | 涩涩的视频在线观看 | 女人和拘做爰正片视频 | www欧美com| 91黄色免费网站 |