.net core nlog记录日志
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记录日志的更多相关文章
- .Net Core 使用NLog记录日志到文件和数据库
NLog 记录日志是微软官方推荐使用. 接下来,通过配置日志记录到文件和Sql Server数据库. 第一步:首先添加包NLog.Config (可通过微软添加包命令Install-Package 包 ...
- .netcore3.1使用log4net/nlog记录日志
.netcore3.1使用log4net/nlog记录日志 .netcore3.1与2.x之间很是有不少差异的.本来想通过ctrl+c,ctrl+v将在2.2中实现的简单日志记录搬到.netcore3 ...
- [转]C# 使用Nlog记录日志到数据库
本文转自:http://www.cnblogs.com/weixing/archive/2013/04/26/3044422.html 摘要]Nlog是一个很不错的.NET日志记录组件,它可以将日志输 ...
- .NET中使用NLog记录日志
以前小编记录日志使用的是Log4Net,虽然好用但和NLog比起来稍显复杂.下面小编就和大伙分享一下NLog的使用方式. 引用NLog.Config 在使用NLog之前,我们要首先添加对NLog.Co ...
- Nlog 记录日志到 sqlite
最近研究了一下Nlog这个日志框架,这里记录一下如何将日志写到sqlite中. 第一步:使用NuGet获取Nlog和Sqlite 第二步:在sqlite中创建一个database,这里我用了SQLit ...
- C# 使用Nlog记录日志到数据库 使用LogEventInfo类获取,命名空间名称、类名、方法名
原文地址:http://dotnet.9sssd.com/csbase/art/793 [摘要]Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台,保存到文本,也可以很方便的记录到数 ...
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
EF+LINQ事物处理 在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...
- C# 使用Nlog记录日志到数据库
[摘要]Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台,保存到文本,也可以很方便的记录到数据库中.本文为你介绍C# 使用Nlog记录日志到数据库. Nlog是一个很不错的.NET ...
- asp.net core 使用NLog记录日志到txt文件
一.使用VisualStudioCode创建一个webapi项目(也可以是mvc等).一个类库(用于封装记录日志方法,当然如果使用依赖注入到控制台项目,就不需要此类库了). 二.在类库中添加NLog. ...
随机推荐
- UEFI主板GPT方式安装CentOS6.4
1. 设置BIOS:禁用CSM,禁用安全启动: 或不用禁用CSM,但以EFI方式安装系统: 2. 使用Diskgen或类似工具把硬盘格式为GPT格式(可以建立多于4个的主分区了): 3. 官 ...
- mapreduce on yarn简单内存分配解释
关于mapreduce程序运行在yarn上时内存的分配一直是一个让我蒙圈的事情,单独查任何一个资料都不能很好的理解透彻.于是,最近查了大量的资料,综合各种解释,终于理解到了一个比较清晰的程度,在这里将 ...
- JavaScript 属性类型(数据属性 访问器属性)
ECMA-2把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.” 严格来说,这就相当于说对象是一组没有特定顺序的值.对象的属性或方法都有一个名字,而每个名字映射到一个值.我们可以把E ...
- Python 函数之路
---恢复内容开始--- python函数的定义 def add(): a = 1 b = 2 c == a + b print(c) 函数就是把一段实现某一个功能的代放进一个封装的方法名里,这个方法 ...
- 对dpkg: error processing package xxx (--configure) 的处理
这个问题是在在安装Deepdive时候碰到的,具体来说在执行 sudo apt-get update碰到的sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_ ...
- 解决WordPress邮件无法发送问题
1 安装插件 Wp Mail Bank 2 开启第三方SMTP服务 以163为例:设置 - POP3/SMTP/IMAP 开启,会要求设置授权码 3 配置插件:Wp Mail Bank - sett ...
- 一个简单的jQuery插件开发实例
两年前写的一个简单的jQuery插件开发实例,还是可以看看的: <script type="text/javascript" src="jquery-1.7.2.m ...
- 一起看看2016中国第三届CSS开发者大会有哪些大咖演讲
中国第三届CSS开发者大会于2016年12月17日在广州举办.由W3C.w3ctech.前端圈主办.本次大会我们将邀请行业内知名讲师,与大家共聚广州,畅聊CSS. 快捷报名通道:http://www. ...
- 认识<meta>
概要:在查看网页源码的时候,经常发现有<meta>标签存在,于是查了一下它的作用,发现有很多功能.下面就简单的阐述一些常见的功能. 一[什么是<meta>标签] meta,即m ...
- Bullet_Point_Py
1. if __name__ == "__main__" Term: 模块最高级的代码:模块中没有缩进的代码 Principal 1: 第一次导入模块会执行模块最高级的代码.不管你 ...