温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C# NLog体验

发布时间:2020-06-24 21:56:02 来源:网络 阅读:1268 作者:Aonaufly 栏目:编程语言

本人直接在Nuget中获得Nlog日志类库支持,再次整下Nuget知识(需要在联网的前景下进行)

①:在项目上右击-》管理NuGet程序包(如下图所示)

C# NLog体验

②:出现管理器面板单击左侧“联网”也签 -》在右侧的搜索栏中输入“NLog”回车-》在中间选择“NLog”栏目点击安装(如下图所示)

C# NLog体验

等待下载(所以说需要联网)

C# NLog体验

C# NLog体验

在这有个小插曲 , 因为我的控制台程序没有配置文件(app.config),一般新建的控制台程序都有的。不说了 , 动手添加,但是必须注意:只能添加一个配置文件(操作如下图)

C# NLog体验

个人觉得比较难找 , 建议使用搜索

C# NLog体验

附上整个App.config的配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
  </configSections>
  <nlog autoReload="true" internalLogLevel="Trace" internalLogFile="logs/internalLog.txt">
    <targets>
      <target name="T1" type="File" fileName="${basedir}/logs/${shortdate}.log"
              layout="${longdate} ${callsite} ${level}: 
              ${message} ${event-context:item=exception} ${stacktrace} ${event-context:item=stacktrace}"/>
      <target name="T2" type="Console" layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level} ${message}"/>
    </targets>
    <rules>
      <logger name="file" minlevel="Debug" maxlevel="Off" writeTo="T1"/>
      <logger name="console" minlevel="Trace" maxlevel="Off" writeTo="T2"/>
    </rules>
  </nlog>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

注解:

① , autoReload="true"表示在不重新启动应用程序的情况下,修改配置文件,NLog会自动加载应用;

internalLogLevel="Trace"internalLogFile="logs/internalLog.txt"这个设置可以将NLog内部的日志消息写到应用程序目录下的logs文件夹里的internalLog.txt文件中;(这个配置常用于调试Nlog的配置是否正确,调试完成后,最好关闭以提高性能)
<target>的配置:type="File|Console" 属性是设置日志输出目标是"File"(文件)或者"Console"(控制台);


②,type="File"的时候要指定fileName属性, fileName="${basedir}/logs/${shortdate}.log" 设置日记记录文件的路径和名称,即应用程序下的log目录里格式为yyyy-MM-DD.log;

layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level} ${message}" 设置日志输出格式(可查阅官网说明).


③,name="file"表示配置的规则适用于Logger名称为“file”,如果填*,则表示所有的Logger都运用这个规则。
minlevel="Debug"maxlevel="Off"用来配置记录的级别为最小是"Debug"最大为"Off"(备注:此处也可以用levels="Debug,Off"来设置,说明只输出Debug级别以及Off级别的日志,官网此处解说有误:)
writeTo="T1"其中T1,T2分别代表上面设置的targets名称为T1以及T2的目标输出,此处表示将分别将日志信息输出到文件/控制台。


有必要说一下消息级别

解压下载的压缩包:http://nlog-project.org/ 请从官网下载

解压后 在src/NLog中有个LogLevel.cs文件,里面有消息等级的相关信息(可以打开看看,总共分6级,从低到高)

C# NLog体验


好了,代码测试:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NLog;
namespace MyNLog
{
    public class Program
    {
        private static Logger @loggerFile = LogManager.GetLogger("file");
        private static Logger @loggerConsole = LogManager.GetLogger("console");
        static void Main(string[] args)
        {
            loggerFile.Debug("A File test Message = Debug");
            loggerFile.Warn("A File test Message = Warn");
            loggerFile.Trace("A File test Message = Trace");
            loggerConsole.Debug("A Console test Message = Debug");
            Console.Read();
        }
    }
}

解析:

① ,@loggerFile类是往文件当中写日志的

② ,@loggerConsole类是往控制台写消息的

C# NLog体验

至于日志在Debug/logs中

C# NLog体验

因为配置问题,参见App.config , 2017-03-09.log中没有A File test Message = Trace

C# NLog体验


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI