目錄
應用配置
應用配置信息一般存在appsettings.json文件中
添加一些配置信息
{
"str": "aaa",
"People": {
"Name": "haha",
"Age": 18
}
}
在Startup中,通過依賴注入給IConfiguration注入服務
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
讀取配置
var str = Configuration["str"];
var name = Configuration["People:Name"];
綁定配置模型對象方式
新建模型
public class People
{
public string Name { get; set; }
public int Age { get; set; }
}
將配置信息綁定到People對象p中
var p = new People();
Configuration.Bind("People", p);
另外一種綁定模型的方式,通過添加服務的方式
在Startup的ConfigureServices方法,配置服務
services.Configure<People>(Configuration.GetSection("People"));
然後在其他地方就可以通過注入方式獲取了
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IOptions<People> peopleOptions)
{
string name = peopleOptions.Value.Name;
}
上面是在controller的注入方式,下面介紹view的注入方式
通過@inject注入
@using Microsoft.Extensions.Options
@inject IOptions<People> peopleOptions
使用
@peopleOptions.Value.Name
通過配置文件名讀取配置
var config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var str = config["str"];
多環境
方法多環境
可以在Properties的launchSetting.json文件中修改配置
將Development修改爲Demo
然後在Startup中添加一個新的方法,與ConfigureServices類型的,起名爲ConfigureDemoServices
public void ConfigureDemoServices(IServiceCollection services)
{
}
這樣我們使用IIS Express啓動時,則執行ConfigureDemoServices方法
同樣的,我們也可以模仿上面的,添加類似Configure方法的ConfigureDemo
Startup多環境
定義一個StartuoDemo的類
public class StartupDemo
{
public IConfiguration Configuration { get; }
public StartupDemo(IConfiguration configuration)
{
Configuration = configuration;
}
}
修改Program的CreateHostBuilder方法
讓其自動尋找指定程序集下對於的Startup類
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup(System.Reflection.Assembly.GetExecutingAssembly().FullName);
//webBuilder.UseStartup<Startup>();
});
日誌
.NET Core 的日誌配置默認只是添加到Console和Debug中
使用NLog
官網地址: https://nlog-project.org/
GitHub地址:https://github.com/NLog/NLog
下載
在NuGet下載NLog和NLog.Web.AspNetCore
添加一個配置文件nlog.config
參考官方文檔:https://github.com/NLog/NLog/wiki/Configuration-file
配置
<?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"
internalLogFile="c:\temp\internal-nlog.txt">
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<targets>
<!-- write logs to file -->
<target name="defaultlog" xsi:type="File" keepFileOpen="false" encoding="utf-8"
fileName="${basedir}/logs/${level}/${shortdate}.log"
layout="${longdate}|${level:uppercase=true}|${logger}|${message}" />
<!-- another file log, only own logs. Uses some ASP.NET core renderers -->
<target xsi:type="File" name="ownFile-web" fileName="${basedir}/logs/${level}/nlog-own-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
</targets>
<!-- rules to map from logger name to target -->
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="trace" writeTo="defaultlog" />
<!--Skip non-critical Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" maxlevel="Info" final="true" />
<!-- BlackHole without writeTo -->
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />
</rules>
</nlog>
修改配置
修改Program文件
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).UseNLog();
使用
public HomeController(ILogger<HomeController> logger)
{
logger.LogInformation("aaaa");
}
日誌
在項目下的bin\Debug\netcoreapp3.1\logs