Net Core 控制台程序使用Nlog 输出到log文件
- using CoreImportDataApp.Common;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.DependencyInjection;
- using System;
- using CoreImportDataApp.Services;
- using NLog;//NLog.Extensions.Logging 和NLog.Web.AspNetCore两个类库。
- using Microsoft.Extensions.Logging;
- using Microsoft.AspNetCore.Hosting;
- namespace CoreImportDataApp
- {
- class Program
- {
- public static string SqlConnecting { get; set; }
- static void Main(string[] args)
- {
- /**
- * 在ASP.NET Core中使用依赖注入中使用很简单,只需在Startup类的ConfigureServices()方法中,
- * 通过IServiceCollection接口进行注入即可,其它的无需关心
- *
- * 在控制台程序中就不一样了,除了注入外,你还需要构建容器,解析注入。
- * 注入通过IServiceCollection接口,而构建容器需要调用IServiceCollection的扩展方法BuildServiceProvider(),
- * 解析需要调用IServiceProvider的扩展方法GetService<T>()
- **/
- var builder = new ConfigurationBuilder()
- .AddJsonFile("appSetting.json");
- var configuration = builder.Build();
- SqlConnecting = configuration.GetConnectionString("DefaultConnection");
- IServiceCollection services = new ServiceCollection();
- services.AddOptions();
- services.Configure<TableStoreModel>(configuration.GetSection("TableStore"));
- services.AddSingleton<TableStoreModel>();
- services.AddTransient<ILoggerFactory, LoggerFactory>();
- services.AddTransient<ITest, Test>();
- IServiceProvider serviceProvider = services.BuildServiceProvider();
- TestDI testDI = new TestDI(serviceProvider);
- testDI.StartWork();
- var host = new WebHostBuilder().UseKestrel().UseStartup<Startup>().Build();
- host.Run();
- Console.ReadLine();
- }
- }
- }
- using Microsoft.AspNetCore.Builder;
- using Microsoft.AspNetCore.Hosting;
- using Microsoft.AspNetCore.Http;
- using Microsoft.Extensions.Logging;
- using NLog.Extensions.Logging;
- using NLog.Web;
- namespace CoreImportDataApp
- {
- public class Startup
- {
- public static NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
- public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
- {
- loggerFactory.AddNLog();
- env.ConfigureNLog("nlog.config");
- app.Run(context=>
- {
- return context.Response.WriteAsync("bido-Nlog");
- });
- }
- }
- }
- using Microsoft.Extensions.Logging;
- using System;
- using System.Collections.Generic;
- using System.Text;
- using NLog;
- using NLog.Extensions.Logging;
- namespace CoreImportDataApp.Services
- {
- public class Test:ITest
- {
- public string Add()
- {
- Startup.log.Info("运行中....");
- return "ITest => test /add()";
- }
- }
- }
- <?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="c:\temp\internal-nlog.txt">
- <!-- define various log targets -->
- <targets>
- <!-- write logs to file -->
- <target xsi:type="File" name="allfile" fileName="D:\ProjectCode\C#Test\NetCore\netcoreWebApi\BidoCoreApi\CoreImportDataApp\bin\logs\nlog-all\${shortdate}.log"
- layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}" />
- <target xsi:type="File" name="ownFile-web" fileName="D:\ProjectCode\C#Test\NetCore\netcoreWebApi\BidoCoreApi\CoreImportDataApp\bin\logs\nlog-own\${shortdate}.log"
- layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}| ${message} ${exception}" />
- <target xsi:type="Null" name="blackhole" />
- </targets>
- <rules>
- <!--All logs, including from Microsoft-->
- <logger name="*" minlevel="Warn" writeTo="allfile" />
- <!--Skip Microsoft logs and so log only own logs-->
- <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
- <logger name="*" minlevel="Debug" writeTo="ownFile-web" />
- <!--Trace Debug Info Warn ERROR Fatal-->
- </rules>
- </nlog>
以上是在网上综合找到的结果;
但是总感觉 投机取巧的使用了web端依赖注入的功能;
各位请吐槽。。有什么高见尽管留言,看到后一一回复
Net Core 控制台程序使用Nlog 输出到log文件的更多相关文章
- 如何在.NET Core控制台程序中使用依赖注入
背景介绍 依赖注入(Dependency Injection), 是面向对象编程中的一种设计原则,可以用来减低代码之间的耦合度.在.NET Core MVC中 我们可以在Startup.cs文件的Co ...
- 在.NET Core控制台程序中使用依赖注入
之前都是在ASP.NET Core中使用依赖注入(Dependency Injection),昨天遇到一个场景需要在.NET Core控制台程序中使用依赖注入,由于对.NET Core中的依赖注入机制 ...
- .Net Core 控制台程序错误:Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x64, win81-x64, win8-x64, win7-x64'.
.Net Core 控制台程序错误:Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible wi ...
- NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
.NET Core 控制台程序没有 ASP.NET Core 的 IWebHostBuilder 与 Startup.cs ,那要读 appsettings.json.注依赖.配日志.设 IOptio ...
- VisualStudioCode创建的asp.net core控制台程序部署到linux
1.asp.net core控制台程序 static void Main(string[] args) { ; ) { Console.WriteLine("Hello World!&quo ...
- 大比速:remoting、WCF(http)、WCF(tcp)、WCF(RESTful)、asp.net core(RESTful) .net core 控制台程序使用依赖注入(Autofac)
大比速:remoting.WCF(http).WCF(tcp).WCF(RESTful).asp.net core(RESTful) 近来在考虑一个服务选型,dotnet提供了众多的远程服务形式.在只 ...
- 【ASP.NET Core分布式项目实战】(五)Docker制作dotnet core控制台程序镜像
Docker制作dotnet core控制台程序镜像 基于dotnet SDK 新建控制台程序 mkdir /home/console cd /home/console dotnet new cons ...
- Supervisor守护DotNet Core控制台程序
Supervisor 相信对Linux系统很熟的都知道这个软件,基于Python写的一个守护进程软件.具体的介绍和使用我就不再赘述了. 使用asp.net core 部署在Linux常用的方法 我们可 ...
- Mac/Windows开发跨平台.NET Core 控制台程序
自从微软开始在Github上开源搞.NET Core后,.NET的跨平台逐渐就成真了.多年使用各种语言,说实话还是csharp用起来最舒服.不过现在的工作环境里使用它的机会比较少,大部分时候只是用来写 ...
随机推荐
- identity方式
identity方式 <generator class="identity"/>identity方式表示数据库的主键生成方式为采用数据库的主键生成机制,例如S ...
- io学习-相关文章
文章:IO编程 地址:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143 ...
- epc笔记
http://wenku.baidu.com/view/5e921520dd36a32d7375812a.html 1. 先注册, EPC注册EPS业务或non-EPS服务 ?? HSS做什么? 2 ...
- Elasticsearch中的分词器比较及使用方法
Elasticsearch 默认分词器和中分分词器之间的比较及使用方法 https://segmentfault.com/a/1190000012553894 介绍:ElasticSearch 是一个 ...
- BZOJ3522 POI2014HOT-Hotels(树形dp)
分两种情况.三点两两lca相同:在三点的lca处对其统计即可,显然其离lca距离应相同:某点在另两点lca的子树外部:对每个点统计出与其距离x的点有多少个即可. 可以长链剖分做到线性,当然不会. #i ...
- BZOJ3243 [Noi2013]向量内积 【乱搞】
题目链接 BZOJ3243 题解 模数只有\(2\)或\(3\),可以大力讨论 如果模数为\(2\),乘积结果只有\(1\)或\(0\) 如果一个向量和前面所有向量乘积都为\(1\),那么其和前面向量 ...
- string 类型转换
string转int "; int n = atoi(str.c_str()); cout << n << endl; int转string #include < ...
- NodeJS + PhantomJS 前端自动化资源监控
前言:最近做前端资源监控,看了很多例子,没有达到想要的效果.首先的槽点是PhantomJS的官方文档,真鸡肋,其次是网上的例子,多数是介绍PhantomJS的用法,而并没有介绍怎么完整的去实现,跟官方 ...
- 给DOM元素绑定click事件也有学问
最简单的莫过于使用click方法: 1 <input id="btn" type="button" value="BUTTON" on ...
- Codeforces ----- Kefa and Dishes [状压dp]
题目传送门:580D 题目大意:给你n道菜以及每道菜一个权值,k个条件,即第y道菜在第x道后马上吃有z的附加值,求从中取m道菜的最大权值 看到这道题,我们会想到去枚举,但是很显然这是会超时的,再一看数 ...