日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 2020国产在线 | 女人下面喷水视频 | 国精品无码一区二区三区 | 少妇久久久久久被弄高潮 | 成人午夜视频精品一区 | 少妇精品无码一区二区免费视频 | www.爆操 | 日韩精品久久久久久免费 | 熟女俱乐部五十路六十路av | 久久瑟瑟 | 国产成人综合网 | 日本wwww色| 欧美顶级少妇做爰hd | 国产精品美女自拍视频 | 99一区二区| 青娱乐欧美 | 成人av免费看 | 亚洲春色av | 亚洲不卡在线视频 | 日本三级久久久 | 天天5g天天爽免费观看 | 日韩一级在线视频 | 高潮毛片无遮挡 | 精品国产免费人成在线观看 | 波多野一区二区三区 | 500部大龄熟乱视频 亚洲乱码精品 | 在线观看日韩 | 亚洲人xxx日本人18 | 丰满人妻一区二区三区53 | 成人污在线观看 | 欧美美女爱爱视频 | 亚洲麻豆一区 | 国产精品一区二区在线观看 | 欧美日韩综合一区二区三区 | 欧美一区免费看 | 男女羞羞的视频 | 91网址入口 | 精品一区中文字幕 | 麻豆短视频在线观看 | 婷婷久久精品 | 狂野少女电影在线观看国语版免费 | 午夜一级黄色片 | 美女张开腿流出白浆 | 国产肉体xxxx裸体784大胆 | 日韩视频网址 | 亚洲国产精品一区二区三区 | 青青伊人av | 97精品国产97久久久久久粉红 | 日本三级理论片 | 中文字幕亚洲欧美日韩在线不卡 | 成人做爰69片免费 | 国产精品乱子伦 | 又大又长粗又爽又黄少妇视频 | 精品无人国产偷自产在线 | 在线观看91| jizz在线观看视频 | 国产成人精品一二三区 | 欧美日韩高清一区 | 乱短篇艳辣500篇h文最新章节 | 精品亚洲国产成人av制服丝袜 | 中国黄色一级视频 | 久久男人| 国产嘿咻| 黄色片视频免费在线观看 | 亚洲成人中文 | 欧美色图亚洲自拍 | 日本熟妇毛耸耸xxxxxx | 91亚洲视频| 人妻互换一区二区激情偷拍 | 四虎影院新网址 | 国产乱淫精品一区二区三区毛片 | 少妇喷白浆 | 天堂网2014| 国产黄色小视频在线观看 | 人人看人人草 | 非洲黑人狂躁日本妞 | 超碰人人人人人人人 | 少妇自摸视频 | 偷偷操99| 国产av人人夜夜澡人人爽麻豆 | 国产成人精品在线视频 | 黄色777| 成人av免费在线看 | 在线免费你懂的 | 国产精品高清无码 | 久青草资源福利视频 | 午夜影院在线视频 | 九一成人网 | 久久亚洲国产成人精品性色 | 香港三级韩国三级日本三级 | 精品三级在线 | 苍井空张开腿实干12次 | 精产国品一区二区 | 国产成a人亚洲精品 | 毛利兰被扒开腿做同人漫画 | 99精品久久久久久久婷婷 | 欧美一级视频免费 | 欧美日韩精品一区二区三区视频播放 | 久久精品视频在线观看 |