1、通过nuget 查找 下载 NLog.Extensions.Logging

2、配置nlog.config文件

 <?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"
throwExceptions="true" internalLogFile="c:\nlog.txt" internalLogLevel="Debug"> <!--
See http://nlog-project.org/wiki/Configuration_file
for information on customizing logging rules and outputs.
-->
<!--<nlog throwExceptions="true" internalLogFile="c:\nlog.txt" internalLogLevel="Debug" />-->
<targets>
<!-- add your targets here -->
<target xsi:type="File" name="file" fileName="${basedir}/logs/${level}/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" /> <!--<target type="Database" name="database" connectionString="Data Source=localhost;Initial Catalog=Test;User ID=sa;Password=sa;MultipleActiveResultSets=true; ">
<commandText>
insert into ErrorLog ([CreateDate], [Origin], [LogLevel], [Message], [StackTrace]) values (@createDate, @origin, @logLevel, @message, @stackTrace);
</commandText>
<parameter name="@createDate" layout="${longdate}"/>
日志发生时间
<parameter name="@origin" layout="${callsite}"/>
日志发生时间
<parameter name="@logLevel" layout="${level}"/>
日志等级
<parameter name="@message" layout="${message}"/>
日志信息
<parameter name="@stackTrace" layout="${stacktrace}"/>
日志发生时间
</target>-->
<!--
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
-->
</targets> <rules>
<!-- add your logging rules here -->
<logger name="*" minlevel="Trace" writeTo="file"/>
<!--<logger name="*" level="Error" appendTo="database"/>--> </rules>
</nlog>

3、在Configure 添加配置

 //日志
loggerFactory.AddNLog();
env.ConfigureNLog("Config/nlog.config");

4、往project.json 添加配置  发布输出

   "publishOptions": {
"include": [
"wwwroot",
"**/*.cshtml",
"appsettings.json",
"web.config",
"Config", //nlog
"Export" //Export
]
},

5、封装的操作类

  /// <summary>
/// 日志
/// </summary>
public class NLogger
{
private static readonly Logger logger = LogManager.GetCurrentClassLogger(); #region "等级1-Debug"
/// <summary>
/// 记录调试信息
/// </summary>
/// <param name="userInfo">用户信息</param>
/// <param name="msg">具体信息</param>
public static void Debug(string msg, string userInfo = "")
{
string info = string.Empty;
if (userInfo != "")
{
info = userInfo;
}
info = info + "\r\n" + msg; logger.Debug(info);
} #endregion #region "等级2-Info" /// <summary>
/// 记录信息
/// </summary>
/// <param name="userInfo">用户信息</param>
/// <param name="msg">具体信息</param>
public static void Info(string msg, string userInfo = "")
{
string info = string.Empty;
if (userInfo != "")
{
info = userInfo;
}
info = info + "\r\n" + msg;
logger.Info(info); } #endregion #region "等级3-Warn" /// <summary>
/// 记录警告信息
/// </summary>
/// <param name="userInfo">用户信息</param>
/// <param name="msg">具体信息</param>
public static void Warn(string msg, string userInfo = "")
{
string info = string.Empty;
if (userInfo != "")
{
info = userInfo;
}
info = info + "\r\n" + msg;
logger.Warn(info); } #endregion #region "等级4-Error" /// <summary>
/// 记录错误信息
/// </summary>
/// <param name="userInfo">用户信息</param>
/// <param name="msg">具体信息</param>
public static void Error(string msg, string userInfo = "")
{
string info = string.Empty;
if (userInfo != "")
{
info = userInfo;
}
info = info + "\r\n" + msg;
logger.Error(info); } /// <summary>
/// 记录异常信息
/// </summary>
/// <param name="userInfo">用户信息</param>
/// <param name="ex">具体异常</param>
public static void Error(Exception ex, string userInfo = "")
{
string info = "";
if (userInfo != "")
{
info = userInfo;
}
info = info+"\r\n" + ErrorDetails(ex);
logger.Error(info); } /// <summary>
/// 将异常转成字符串
/// </summary>
/// <param name="ex"></param>
/// <returns></returns>
private static string ErrorDetails(Exception ex)
{
StringBuilder sb = new StringBuilder();
int count = ;
string appString = "";
while (ex != null)
{
if (count > )
{
appString += " ";
}
sb.AppendLine(appString + " <br>异常消息:" + ex.Message);
sb.AppendLine(appString + " <br>异常类型:" + ex.GetType().FullName);
// sb.AppendLine(appString + " <br>异常方法:" + (ex.TargetSite == null ? null : ex.TargetSite.Name));
sb.AppendLine(appString + " <br>异常源:" + ex.Source);
if (ex.StackTrace != null)
{
sb.AppendLine(appString + "<br>异常堆栈:" + ex.StackTrace);
}
if (ex.InnerException != null)
{
sb.AppendLine(appString + "<br>内部异常:");
count++;
}
ex = ex.InnerException;
} return sb.ToString().Replace("位置:", "<br>位置");
} #endregion #region "等级5-Fatal " /// <summary>
/// 记录致命错误
/// </summary>
/// <param name="userInfo">用户信息</param>
/// <param name="msg">具体信息</param>
public static void Fatal(string msg, string userInfo = "")
{
string info = string.Empty;
if (userInfo != "")
{
info = userInfo;
}
info = info + "\r\n" + msg;
logger.Fatal(info); } #endregion
}

5、调用

NLogger.Debug("测试");

.net core nlog记录日志的更多相关文章

  1. .Net Core 使用NLog记录日志到文件和数据库

    NLog 记录日志是微软官方推荐使用. 接下来,通过配置日志记录到文件和Sql Server数据库. 第一步:首先添加包NLog.Config (可通过微软添加包命令Install-Package 包 ...

  2. .netcore3.1使用log4net/nlog记录日志

    .netcore3.1使用log4net/nlog记录日志 .netcore3.1与2.x之间很是有不少差异的.本来想通过ctrl+c,ctrl+v将在2.2中实现的简单日志记录搬到.netcore3 ...

  3. [转]C# 使用Nlog记录日志到数据库

    本文转自:http://www.cnblogs.com/weixing/archive/2013/04/26/3044422.html 摘要]Nlog是一个很不错的.NET日志记录组件,它可以将日志输 ...

  4. .NET中使用NLog记录日志

    以前小编记录日志使用的是Log4Net,虽然好用但和NLog比起来稍显复杂.下面小编就和大伙分享一下NLog的使用方式. 引用NLog.Config 在使用NLog之前,我们要首先添加对NLog.Co ...

  5. Nlog 记录日志到 sqlite

    最近研究了一下Nlog这个日志框架,这里记录一下如何将日志写到sqlite中. 第一步:使用NuGet获取Nlog和Sqlite 第二步:在sqlite中创建一个database,这里我用了SQLit ...

  6. C# 使用Nlog记录日志到数据库 使用LogEventInfo类获取,命名空间名称、类名、方法名

    原文地址:http://dotnet.9sssd.com/csbase/art/793 [摘要]Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台,保存到文本,也可以很方便的记录到数 ...

  7. EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象

    EF+LINQ事物处理   在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...

  8. C# 使用Nlog记录日志到数据库

    [摘要]Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台,保存到文本,也可以很方便的记录到数据库中.本文为你介绍C# 使用Nlog记录日志到数据库. Nlog是一个很不错的.NET ...

  9. asp.net core 使用NLog记录日志到txt文件

    一.使用VisualStudioCode创建一个webapi项目(也可以是mvc等).一个类库(用于封装记录日志方法,当然如果使用依赖注入到控制台项目,就不需要此类库了). 二.在类库中添加NLog. ...

随机推荐

  1. 函数:atexit

    函数说明: 1.原型:int atexit (void (*func)(void)); 2.功能:注册退出main函数之后将要被执行的函数: 3.参考:http://www.cplusplus.com ...

  2. FD.io VPP 技术Neutron VNF vRouter 实现

    在OpenStack Neutron中主要有三种网络设备,路由器(Router),负载均衡器(LB)以及VPN,其中Router作为基础网络设备起到连接子网到子网.内网到外网的作用.不同子网之间的访问 ...

  3. super在构造函数中的运用

    package example;//在子类构造对象时,访问子类构造函数时候,父类也运行.//原因是:在子类的构造函数中第一行有一个默认的隐式语句super();/* 构造函数不能覆盖 子类的实例化过程 ...

  4. bit、byte、k

    bit(位/比特位):一个二进制数据0/1 byte(字节):简称B:1byte=8bit:一个英文字符占用1byte,一个汉字占用2byte k:1K=1024B M:1M=1024K

  5. jquery里面的attr和css来设置轮播图竟然效果不一致

    /*封装$*/ // window.$=HTMLElement.prototype.$=function(selector){ // var elems=(this==window?document: ...

  6. 查看SQL语句执行时间与测试SQL语句性能

    查看SQL语句执行时间与测试SQL语句性能 写程序的人,往往需要分析所写的SQL语句是否够优化.是否能提升执行效率,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了 ...

  7. javascript 判断是否使用的是ipad

    //判断是否使用的是ipad function isIpad(){ var ua = navigator.userAgent.toLowerCase(); if(/ipad/i.test(ua)) { ...

  8. JAVA监听

    http://www.cnblogs.com/xdp-gacl/p/3961929.html 不要按汉字的字面意思理解这东西,其实它就是把某个操作绑到了某个按纽上,当你按那个按纽的时候,它所绑定的操作 ...

  9. document.body 和 document.documentElement 的区别

    document.body 和 document.documentElement 的区别 : www.cnblogs.com/scy251147/archive/2011/04/10/2011420. ...

  10. java default使用

    我们都知道在Java语言的接口中只能定义方法名,而不能包含方法的具体实现代码.接口中定义的方法必须在接口的非抽象子类中实现.下面就是关于接口的一个例子: public interface Simple ...