.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. ...
随机推荐
- iOS 打包上传AppStore相关(3)-iTunes相应配置以及使用蒲公英网站进行应用托管分发(链接/二维码)
上一篇讲到我们最终生成了一个格式为 .xcarchive 的文件(可以右键并Show in Finder)查看.本篇我们就进行最后的设置,打包上传.另外,还有一个小福利,那就是打测试包分发链接测试. ...
- jquery学习笔记3 jq遍历
遍历方式:向上(父级元素) 向下(子元素) 水平(同胞元素) 一.向上遍历 parent() 向上一级 放回被选元素的直接父元素 parents() 返回被选元 ...
- Zookeeper Watcher 解析
1.Watcher 接口源码 1. 当客户端向zookeeper注册了watcher时,当服务器向客户端发送一个watcher事件通知时,客户端会调用回调方法process(WatchedEvent ...
- Spring Security(09)——Filter
目录 1.1 Filter顺序 1.2 添加Filter到FilterChain 1.3 DelegatingFilterProxy 1.4 FilterChainPr ...
- php中 xml json 数组 之间相互转换
php中 xml json 数组 之间相互转换 1 数组转json $result = array( 'status' =>$status, 'message'=>$message, ' ...
- json恶补
JS操作JSON总结 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScr ...
- Docker私有仓库2
http://www.cnblogs.com/womars/p/5906410.html 接着上篇,上面为上篇地址. #通过docker tag将该镜像标志为要推送到私有仓库 [root@lh- ~] ...
- Docker 安装完启动服务报错
[root@lh- ~]# docker images Cannot connect to the Docker daemon. Is the docker daemon running on thi ...
- jQuery 属性操作 - attr() 方法
定义和用法 attr() 方法设置或返回被选元素的属性值. 根据该方法不同的参数,其工作方式也有所差异. 实例1 设置被选元素的属性和值. <html><head><sc ...
- 查看linux系统版本是32位还是64位
如何查看ubuntu版本是64位还是32位的: 1.# uname -a 如果有x86_64就是64位的,没有就是32位的 2.# uname -mx86_64 3.# archx86_6 如何查看u ...