详解.net core日记记录
程序员文章站
2023-12-10 08:35:58
asp.net core 有内置的log组件,遗憾的是看了微软官方文档,貌似无法直接将日志存于文件或数据库,只能由自己实现或引用第三方日志组件。
以下为nlog和log4...
asp.net core 有内置的log组件,遗憾的是看了微软官方文档,貌似无法直接将日志存于文件或数据库,只能由自己实现或引用第三方日志组件。
以下为nlog和log4net的使用记录
nlog使用
搜索添加nuget包
nlog
nlog.web.aspnetcore
新建一个xml文件,并改名为nlog.config
xml内容如下(可配置日志目录名称、输出格式):
<?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;
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、注入形式
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、获取实例形式
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
新建配置文件
<?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
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中的使用
private ilog log = logmanager.getlogger(startup.repository.name, typeof(valuescontroller)); [httpget] public actionresult<ienumerable<string>> get() { log.info(1111111111111111111); return new string[] { "value1", "value2" }; }
控制台中的使用
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日记记录详解整合,希望对大家有所帮助
推荐阅读
-
详解.NET Core使用Quartz执行调度任务进阶
-
详解.Net Core 权限验证与授权(AuthorizeFilter、ActionFilterAttribute)
-
详解Asp.Net Core 2.1+的视图缓存(响应缓存)
-
.net core webapi jwt 更为清爽的认证详解
-
.net core高吞吐远程方法如何调用组件XRPC详解
-
Asp.net core利用MediatR进程内发布/订阅详解
-
asp.net core集成JWT的步骤记录
-
(14)ASP.NET Core 中的日志记录
-
详解.NET Core+Docker 开发微服务
-
.NET Core/Framework如何创建委托大幅度提高反射调用的性能详解