首先用NuGet安装NLog依赖DLL

NLog

NLog.Config

NLog.Schema

NLog配置文件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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off"
internalLogFile="${basedir}/Log/nlog-internal.log"> <!-- optional, add some variables
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<!--<variable name="myvar" value="myvalue"/>--> <variable name="logDir" value="${basedir}/Log"/>
<variable name="logFileName" value="${date:format=yyyyMMdd}.txt"/>
<variable name="logArchiveFileName" value="${date:format=yyyyMMdd}_{#}.txt"/>
<variable name="logLayout" value="${date:format=yyyy-MM-dd HH\:mm\:ss.fff} [${level}] ${message}"/> <!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
--> <targets> <!--
add your targets here
See https://github.com/nlog/NLog/wiki/Targets for possible targets.
See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
--> <!--
Write events to a file with the date in the filename.
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
--> <target xsi:type="File" name="debug"
layout="${logLayout}"
fileName="${logDir}/Debug/${logFileName}"
archiveFileName="${logDir}/Debug/${logArchiveFileName}"
archiveAboveSize="10485760"
archiveNumbering="Sequence"
maxArchiveFiles="10000"
concurrentWrites="true"
keepFileOpen="true"
openFileCacheTimeout="30"
encoding="UTF-8" /> <target xsi:type="File" name="info"
layout="${logLayout}"
fileName="${logDir}/Info/${logFileName}"
archiveFileName="${logDir}/Info/${logArchiveFileName}"
archiveAboveSize="10485760"
archiveNumbering="Sequence"
maxArchiveFiles="10000"
concurrentWrites="true"
keepFileOpen="true"
openFileCacheTimeout="30"
encoding="UTF-8" /> <target xsi:type="File" name="error"
layout="${logLayout}"
fileName="${logDir}/Error/${logFileName}"
archiveFileName="${logDir}/Error/${logArchiveFileName}"
archiveAboveSize="10485760"
archiveNumbering="Sequence"
maxArchiveFiles="10000"
concurrentWrites="true"
keepFileOpen="true"
openFileCacheTimeout="30"
encoding="UTF-8" /> </targets> <rules>
<!-- add your logging rules here --> <!--
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
<logger name="*" minlevel="Debug" writeTo="f" />
--> <!-- 不打印Quartz组件的日志 -->
<logger name="Quartz.*" maxlevel="Info" final="true" /> <logger name="*" minlevel="Debug" maxlevel="Debug" writeTo="debug" /> <logger name="*" minlevel="Info" maxlevel="Error" writeTo="info" /> <logger name="*" minlevel="Error" maxlevel="Error" writeTo="error" /> </rules>
</nlog>

变量定义:

private Logger _log = NLog.LogManager.GetLogger("NLogTest");

或者:

private Logger _log = NLog.LogManager.GetCurrentClassLogger();

写日志示例:

private void button4_Click(object sender, EventArgs e)
{
Task.Run(() =>
{
Log("==== 开始 ========");
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
List<Task> taskList = new List<Task>();
Task tsk = null;
int taskCount = 0; tsk = Task.Run(() =>
{
for (int i = 0; i < n; i++)
{
_log.Info("测试日志 " + i.ToString("000000"));
Interlocked.Increment(ref taskCount);
}
});
taskList.Add(tsk); tsk = Task.Run(() =>
{
for (int i = 0; i < n; i++)
{
_log.Debug("测试日志 " + i.ToString("000000"));
Interlocked.Increment(ref taskCount);
}
});
taskList.Add(tsk); tsk = Task.Run(() =>
{
for (int i = 0; i < n; i++)
{
_log.Error("测试日志 " + i.ToString("000000"));
Interlocked.Increment(ref taskCount);
}
});
taskList.Add(tsk); Task.WaitAll(taskList.ToArray());
Log("Task Count=" + taskCount); Log("==== 结束 " + ",耗时:" + stopwatch.Elapsed.TotalSeconds.ToString("0.000") + " 秒 ========");
stopwatch.Stop();
});
}

C# NLog 配置的更多相关文章

  1. ASP.NET Core根据环境切换NLog配置

    1.新建NLog配置文件,名称分别为nlog.config和nlog.debug.config <?xml version="1.0"?> <nlog xmlns ...

  2. Nlog配置

    初次使用nlog,里里外外找了好久,终于搞会了. 使用nlog建日志输出到txt文件.数据库.邮件 nlog配置,如图 码云dome

  3. NLog 配置

    之前我介绍过如何使用log4net来记录日志,但最近喜欢上了另一个简单好用的日志框架NLog. 关于NLog和log4net的比较这里就不多讨论了,感兴趣的朋友可以参看.NET日志工具介绍和log4n ...

  4. NLog 配置与使用

    有段时间没写博客了,过年放假,一直在弄CMS.什么都自己写了一遍,今天写写NLog,之前一用的log4net,感觉配置起来还是有些麻烦. NuGet 添加组件 配置 NLog.config <? ...

  5. Nlog配置实例

      彩色Console target <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns= ...

  6. Nlog 配置总结

    Writes log messages to one or more files. Since NLog 4.3 the ${basedir} isn't needed anymore for rel ...

  7. NLog配置分享

    新建一个文件命名为NLog.Config,然后添加如下代码 <?xml version="1.0" encoding="utf-8" ?> < ...

  8. NLog配置JsonLayout中文输出为unicode问题

    日志输出现要改为json格式,网上查询layout配置为JsonLayout就可以了,结果发现输出中文为unicode编码,看很多文章说配置encode="false"就可以了,结 ...

  9. 常用NLog配置

    <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSe ...

  10. .net core webapi +ddd(领域驱动)+nlog配置+swagger配置 学习笔记(1)

    搭建一个.net core webapi项目  在开始之前,请先安装最新版本的VS2017,以及最新的.net core 2.1. 首先创建一个Asp.Net Core Web应用程序 这个应用程序是 ...

随机推荐

  1. Vue07-Axios

    Axios axios是一个网络请求相关的库. axios: ajax i/o system 使用axios编写的网络请求代码,可以运行在浏览器端,也可以在Node环境中运行. 01. 支持的请求方式 ...

  2. 【Javaweb】JavaEE项目的三层架构 | 快速搭建

    逻辑类图 分层的目的是为了解耦.解耦就是为了降低代码的耦合度.方便项目后期的维护和升级. 不同的层有不同的包 web层 com.stguigu.web/servlet/controller servi ...

  3. Python 实现Word转HTML

    将Word转换为HTML能将文档内容发布在网页上,这样,用户就可以通过浏览器直接查看或阅读文档而无需安装特定的软件.Word转HTML对于在线发布信息.创建在线文档库以及构建交互式网页应用程序都非常有 ...

  4. 搭建一个简易的IPv6网络测试环境

    背景 近期一个项目要求产品在IPv6网络环境部署,在此之前所有的项目网络环境都是IPv4,为了验证产品网络适配能力,需要搭建一套IPv6的网络测试环境,网上搜了很多教程,也在某东找了很多路由器,对于如 ...

  5. Chrome扩展开发系列开篇

    大家好,我是 dom 哥.这是我关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星. 浏览器现状 研究机构 Statcounter 发布了 2023 年 9 月报告,揭示了有关浏览器的最 ...

  6. Jenkins 系列:Jenkins 安装(Windows、Mac、Centos)和简介

    目录 简介 发展历史 应用场景 Jenkins 安装部署 先决条件 硬件要求 软件包下载 war 包部署 linux 系统部署 mac 系统部署 windows 系统部署 安装后基本配置 解锁 自定义 ...

  7. 变更(重命名)AD域名称

    文章来自:https://blog.51cto.com/sxleilong/1377731 示例将域名contoso.com重命名为Corp.sxleilong.com 查看当前fsmo的5个角色. ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (45)-- 算法导论6.1 3题

    三.证明:在最大堆的任一子树中,该子树所包含的最大元素在该子树的根结点上. 文心一言: 在最大堆中,根结点是整个堆中最大元素的孩子,因此它包含的最大元素是在该子树的根结点上. 我们可以通过递归的方式证 ...

  9. 文心一言 VS 讯飞星火 VS chatgpt (37)-- 算法导论5.4 1题

    一.一个屋子里必须要有多少人,才能让某人和你生日相同的概率至少为1/2? 必须要有多少人,才能让至少两个人生日为 7月 4 日的概率大于 1/2? 文心一言: 一个屋子里必须要有多少人,才能让某人和你 ...

  10. 干货分享丨玩转物联网IoTDA服务系列六-恒温空调

    摘要:本文主要讲述空调接入到物联网平台后,通过恒温空调控制系统,不论空调是否开机,都可以调整空调默认温度,待空调上电开机后,自动按默认温度调节. 场景简介 通过恒温控制系统,不论空调是否开机,都可以调 ...