ASP.NET Core 有内置的log组件,遗憾的是看了微软官方文档,貌似无法直接将日志存于文件或数据库,只能由自己实现或引用第三方日志组件。
以下为Nlog和log4net的使用记录
Nlog使用
搜索添加Nuget包
Nlog
Nlog.Web.AspNetCore
新建一个xml文件,并改名为nlog.config
XML内容如下(可配置日志目录名称、输出格式):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<? 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 = "Logs/service-${shortdate}.log" layout = "${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" /> </ targets > < rules > <!--All logs, including from Microsoft--> < logger name = "*" minlevel = "Trace" writeTo = "allfile" /> </ rules > </ nlog > |
将nlog.config设置输出到目录
在Startup类中配置
需要引入命名空间:
using NLog.Extensions.Logging;
using NLog.Web;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactor) { //使用Nlog loggerFactor.AddNLog(); //引入配置文件 env.ConfigureNLog( "nlog.config" ); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler( "/Error" ); } app.UseStaticFiles(); app.UseCookiePolicy(); app.UseMvc(); } |
代码中的使用
有两中方式如下:
1、注入形式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class IndexModel : PageModel { private ILogger<IndexModel> _logger; public IndexModel(ILogger<IndexModel> logger) { _logger = logger; } public string Customer { get ; set ; } public void OnGet() { _logger.LogWarning( "111111111111111111111" ); Customer = "123456" ; } } |
2、获取实例形式
1
2
3
4
5
6
|
private static Logger Logger = LogManager.GetCurrentClassLogger(); public static void Main( string [] args) { Logger.Error( "22222222222222222222222222222" ); Logger.Info( "333333333333333333333333333333" ); } |
log4net
log4net已支持net core,来看下在net core下是如何配置的,与之前的版本还是有一点的区别
使用惯例,引用Nuget
log4net
新建配置文件
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
31
32
33
34
35
36
37
38
39
|
<? xml version = "1.0" encoding = "utf-8" ?> < configuration > <!-- This section contains the log4net configuration settings --> < log4net > < appender name = "ConsoleAppender" type = "log4net.Appender.ConsoleAppender" > < layout type = "log4net.Layout.PatternLayout" value = "%date [%thread] %-5level %logger - %message%newline" /> </ appender > < appender name = "FileAppender" type = "log4net.Appender.FileAppender" > < file value = "log-file.log" /> < appendToFile value = "true" /> < layout type = "log4net.Layout.PatternLayout" > < conversionPattern value = "%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </ layout > </ appender > < appender name = "RollingLogFileAppender" type = "log4net.Appender.RollingFileAppender" > < file value = "logs/" /> < appendToFile value = "true" /> < rollingStyle value = "Date" /> < staticLogFileName value = "false" /> < datePattern value = "yyyy-MM-dd'.log'" /> < maxSizeRollBackups value = "7" /> < maximumFileSize value = "1MB" /> < layout type = "log4net.Layout.PatternLayout" > < conversionPattern value = "%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </ layout > </ appender > <!-- Setup the root category, add the appenders and set the default level --> < root > < level value = "ALL" /> < appender-ref ref = "ConsoleAppender" /> < appender-ref ref = "FileAppender" /> < appender-ref ref = "RollingLogFileAppender" /> </ root > </ log4net > </ configuration > |
配置文件的相关说明,可以查看另一篇文章点我跳转
在StartUp.cs中配置log4Net
1
2
3
4
5
6
7
8
9
10
|
public static ILoggerRepository repository { get ; set ; } public Startup(IConfiguration configuration) { Configuration = configuration; //log4net repository = LogManager.CreateRepository( "NETCoreRepository" ); //指定配置文件 XmlConfigurator.Configure(repository, new FileInfo( "log4net.config" )); } |
Controller中的使用
1
2
3
4
5
6
7
8
|
private ILog log = LogManager.GetLogger(Startup.repository.Name, typeof (ValuesController)); [HttpGet] public ActionResult<IEnumerable< string >> Get() { log.Info(1111111111111111111); return new string [] { "value1" , "value2" }; } |
控制台中的使用
1
2
3
4
5
6
7
|
ILoggerRepository repository = LogManager.CreateRepository( "NETCoreRepository" ); XmlConfigurator.Configure(repository, new FileInfo( "log4net.config" )); ILog log = LogManager.GetLogger(repository.Name, "NETCorelog4net" ); log.Info( "test log" ); |
以上所述是小编给大家介绍的.net core日记记录详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:https://www.cnblogs.com/qiuguochao/p/10765614.html