开源DDD设计模式框架YMNNetCoreFrameWork第6篇-.net Core Logging和Nlog结合
源码地址:https://github.com/topgunymn/YMNNetCoreFrameWork
遇到的坑:使用了Nlog以后,.NETcore自带的日志等级不起作用,只有nlog配置配置文件才能控制他的日志等级
1、.NET core增加NLog日志,.NET CORE自带的日志无法保存到文件,所以使用NLOG
2、下载NLog.Web.AspNetCore
3、注入nlog
//添加NLog
loggerFactory.AddNLog();
//读取Nlog配置文件
env.ConfigureNLog("NLog.config");
4、配置文件
<?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">--> <!-- 自动查找Nlog.XML文件--> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
throwExceptions="true"
internalLogLevel="Off">
<!--variable name="logDirectory" value="${basedir}\log\"/>
-->
<!--定义日志要写入的目标对象,可写入file,database,email等-->
<targets>
<!--记录bug错误的文件,比较严重的错误,如未知的异常错误-->
<target xsi:type="File" name="bugerror" fileName="${basedir}\bugerror\${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId.Id}|${uppercase:${level}}|${logger}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}|${callsite}|${message} ${exception}" />
<!--记录异常信息,一般的错误,如程序抛出的已知异常-->
<target xsi:type="File" name="error" fileName="${basedir}\error\${shortdate}.log"
layout="日期:${longdate} 级别:${level}|记录者: ${logger} url: ${aspnet-request-url} 方法:: ${callsite} 内容:${message} 异常信息: ${exception}" />
<!--// 记录普通日志,-->
<target xsi:type="File" name="info" fileName="${basedir}\info\${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId.Id}|${uppercase:${level}}|${logger}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}|${callsite}|${message} ${exception}" />
<!--//记录特殊日志,按记录类型分类-->
<target xsi:type="File" name="sepcial" fileName="${basedir}\sepcial\${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId.Id}|${uppercase:${level}}|${logger}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}|${callsite}|${message} ${exception}" />
</targets> <!--// 规则,定义loggner.name到target.name的对应关系-->
<rules>
<!--//写入到bugerror目标的日志-->
<logger name="*" level="Fatal" writeTo="bugerror" enabled="true" />
<!--// 写入到error目标的日志-->
<logger name="*" level="Error" writeTo="error" enabled="true" />
<!--/写入到info目标的日志 Trace,Debug,Info, -->
<logger name="*" levels="Warn" writeTo="info" enabled="true" />
<!--//写入到特殊日志目标,示例:LogManager.GetLogger("special")对象写入的所有日志用本规则--> <logger name="special" minlevel="Trace" writeTo="sepcial" />
</rules> <!--</nlog>--> <!--define various log targets-->
<!--
<targets> <target xsi:type="Null" name="blackhole" />
<target xsi:type="Database" name="database" connectionString="Data Source=.;Initial Catalog=WisdomMedicalDB;User ID=sa;Password=123456" >
<commandText>
insert into ApplicationLogs (
Application, Logged, Level, Message,
Logger, Callsite, Exception
) values (
@Application, @Logged, @Level, @Message,
@Logger, @Callsite, @Exception
);
</commandText> <parameter name="@application" layout="兰德视迅智慧医院" />
<parameter name="@logged" layout="${date}" />
<parameter name="@level" layout="${level}" />
<parameter name="@message" layout="${message}" />
<parameter name="@logger" layout="${logger}" />
<parameter name="@callSite" layout="${callsite}" />
<parameter name="@exception" layout="${exception:tostring}" />
</target> </targets> <rules>
-->
<!--Skip Microsoft logs and so log only own logs evels="Debug,Info,Error,Warn" -->
<!--
<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
<logger name="*" writeTo="database" /> </rules>-->
</nlog>
5、注入nlog, private readonly ILogger _logger = NLog.LogManager.GetCurrentClassLogger();
6、使用
/// <summary>
/// 测试日志
/// </summary>
/// <returns></returns>
[HttpGet("TestLog")] public async Task<object> TestLog() { _logger.Error("测试错误");
_logger.Debug("测试debug");
_logger.Info("测试info");
_logger.Warn("测试warn");
//_logger.LogError("测试错误");
//_logger.LogDebug("测试debug");
//_logger.LogInformation("测试info");
//_logger.LogWarning("测试warn");
return true;
}
开源DDD设计模式框架YMNNetCoreFrameWork第6篇-.net Core Logging和Nlog结合的更多相关文章
- 开源DDD设计模式框架YMNNetCoreFrameWork第五篇-Swagger增加权限认证
配置文件services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Version = " ...
- 开源DDD设计模式框架YMNNetCoreFrameWork第三篇-增加ASp.net core Identity身份认证,JWT身份认证
1.框架增加Identity注册功能 2.框架增加identity登录以后获取JWTtoken 3.请求接口通过token请求,增加验证特性 源代码地址:https://github.com/topg ...
- 开源DDD设计模式框架YMNNetCoreFrameWork第四篇-增加YMNSession,增加异常处理,增加策略授权
1.增加YMNSession,可以获取当前登录的用户信息 2.增加异常处理,不要使用过滤器,过滤器只能获取到mvc异常 3.增加策略授权,策略授权支持用户角色.用户名授权,初步实现 代码地址:http ...
- 开源DDD设计模式框架YMNNetCoreFrameWork第一篇
DDD设计模式:仓储.领域模型.应用层.聚合根.事件总线,以业务模型驱动设计,从数据模型驱动脱离,不用关心数据库设计,开发效率更高 DDD领域驱动设计模型概念不再讲解,直接上技术 框架搭建: 如图所示 ...
- 开源DDD设计模式框架YMNNetCoreFrameWork第二篇-增加swagger,数据库迁移,增加权限模型
1.框架去掉application层,把HOst作为application层 2.增加swagger插件 3.增加Asp.net Identity身份验证 源代码地址:https://github. ...
- [开源].NET高性能框架Chloe.ORM-完美支持.NET Core
扯淡 这是一款轻量.高效的.NET C#数据库访问框架(ORM).查询接口借鉴 Linq(但不支持 Linq).借助 lambda 表达式,可以完全用面向对象的方式就能轻松执行多表连接查询.分组查询. ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图实体类映射 下一篇:Farseer.net轻量级ORM开源 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程数据操作
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程实体类映射 下一篇:Farseer.net轻量级ORM ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程实体类映射
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作 下一篇:Farseer.net轻量级ORM开源 ...
随机推荐
- eclispe+maven+ssm+sql_server/mysql配置
链接: https://pan.baidu.com/s/1_BFI8XfS8l89-3-1IjlVZg 密码: x9in
- 为什么阿里Java规约要求谨慎使用SimpleDateFormat
前言 在阿里Java开发规约中,有强制性的提到SimpleDateFormat 是线程不安全的类 ,在使用的时候应当注意线程安全问题,如下: 其实之前已经介绍过使用JDK1.8的DateTimeFor ...
- python中提取位图信息(AttributeError: module 'struct' has no attribute 'unstack')
前言 今天这篇博文有点意思,它是从一个例子出发,从而体现出在编程中的种种细节和一些知识点的运用.和从前一样,我是人,离成神还有几十万里,所以无可避免的出现不严谨的地方甚至错误,请酌情阅读. 0x00 ...
- Serializable的理解和使用 -----转载
1.定义 这是一个接口,当一个类实现这个接口后,这个类就变成了一个可序列化的类,它就可以被写入流,保存起来,然后也可以用流读取,反序列化. 一般情况下,一个对象会随着程序的执行完成而消失,而有时我们需 ...
- 【剑指Offer面试编程题】题目1369:字符串的排列--九度OJ
题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入: 每个 ...
- 4 (计算机网络) DHCP与PXE:IP是怎么来的,又是怎么没的?
如何配置 IP 地址? 那如何配置呢?如果有相关的知识和积累,你可以用命令行自己配置一个地址.可以使用 ifconfig,也可以使用 ip addr.设置好了以后,用这两个命令,将网卡 up 一下,就 ...
- Windows下配置多个Git账号
1. 为什么会用多个git账号? 不同git账号对应不同代码托管平台,如:github.bitbucket.gitlab.gitee(码云)等 2个GitHub账号,用于测试(最近需求,之前没研究过g ...
- ie brower 点击用默认浏览器打开链接
<script> function GetCurrentJumpUrl(){ var eleLink = document.getElementById('adLink'); if(ele ...
- NO29 用户提权sudo配置文件详解实践--志行为审计
用户提权sudo配置文件详解实践: 放到visudo里: 验证权限:
- ffmpeg 学习:002-代码架构
前言 使用 ffmpeg 库时,最好先理解好ffmpeg的代码结构图. 下面这张图表明了FFmpeg在解码一个视频的时候的函数调用流程,为了保证结构清晰,其中仅列出了最关键的函数,剔除了其它不是特别重 ...