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