本文介绍c#的日志插件NLog

安装插件

创建logger

日志级别

书写日志信息

配置

包装器

布局

  1. 安装插件

    直接下载插件包 Install-Package NLog.Config
  2. 创建logger

    使用LogManager创建Logger实例,最好一个类里面一个Logger实例
    写法一
    这种写法,记录的日志文件,显示的logger名字,是命名空间加上logger所在类的类名,如 ConsoleApp1.Program
    private static Logger mylogger = LogManager.GetCurrentClassLogger();
    写法二
    这种写法,可以手动设置日志文件中的logger名字
    Logger mylogger = LogManager.GetLogger("myTest");
  3. 日志级别

    级别由低到高
    Trace 记录完整的信息,一般只用在开发环境
    Debug 记录调试信息,没有Trace信息完整,一般也只用在开发环境
    Info 简单的信息,一般用在生产环境
    Warn 记录警告信息,一些可以解决的小问题
    Error 记录报错信息,一般都是Exceptions信息
    Fatal 非常严重的错误信息
  4. 书写日志信息

    logger.Trace("Sample trace message");
    logger.Debug("Sample debug message");
    logger.Info("Sample informational message");
    logger.Warn("Sample warning message");
    logger.Error("Sample error message");
    logger.Fatal("Sample fatal error message");
    或者使用
    logger.Log(LogLevel.Info, "Sample informational message");
    支持格式化 mylogger.Fatal("Sample {0} error message", "fetal");
    尽量使用NLog内置的格式化工具,NLog做了优化工作
  5. 配置

    最基础的配置
    第一步,打开NLog.config配置文件,添加如下配置
    <targets>
    <target name="logfile" xsi:type="File" fileName="file.txt" /> // 创建一个target,代表输出日志文件的配置
    </targets>
    <rules>
    <logger name="*" minlevel="Info" writeTo="logfile" /> // 设置Info级别以上的日志,才能够输入到什么名为logfile的target当中
    /*
    1.这里logger自己还有一个name,这个name对应类名,也就是说什么样的类名可以输出日志,如ConsoleApp1.Program
    2.可以添加final="true"属性,表示后面的所有针对此指定名字的logger都无效
    */
    </rules>
    第二步,运行代码即可
    多target配置
    <targets>
    <target name="logfile" xsi:type="File" fileName="file.txt" />
    <target name="console" xsi:type="Console" /> // 创建一个target表示用控制台输出日志信息
    </targets>
    <rules>
    <logger name="*" minlevel="Trace" writeTo="logfile" />
    <logger name="*" minlevel="Info" writeTo="console" /> // 将Info级别以上的配置信息输出到名为console的target中
    </rules>
  6. 包装器

    异步包装器配置
    <targets>
    <target name="asyncFile" xsi:type="AsyncWrapper">
    <target name="logfile" xsi:type="File" fileName="file.txt"/>
    </target>
    </targets>
    <rules>
    <logger name="*" minlevel="Trace" writeTo="asyncFile"/>
    </rules>
    还有很多包装器,按需自查
  7. 布局

    布局是用来格式化日志输出信息的
    simple日志格式化
    <target name="logfile" xsi:type="File" fileName="file.txt" layout="${date:format=yyyyMMddHHmmss} ${message} ${counter:increment=3:sequence=Layout:value=5}"/>
    还有很多格式化写法,自行查阅
  8. 子类继承log

    public class Demo1
    {
    protected Logger Log { get; set; }
    protected Demo1()
    {
    Log = LogManager.GetLogger(GetType().FullName);
    }
    }
    public class Demo2: Demo1
    {
    public Demo2():base() { }
    }

c#的日志插件NLog基本使用的更多相关文章

  1. ASP.NET Core 入门教程 10、ASP.NET Core 日志记录(NLog)入门

    一.前言 1.本教程主要内容 ASP.NET Core + 内置日志组件记录控制台日志 ASP.NET Core + NLog 按天记录本地日志 ASP.NET Core + NLog 将日志按自定义 ...

  2. 一个简单好用的日志框架NLog

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

  3. .NET技术-3.0. 日志插件 log4net

    .NET技术-3.0. 日志插件 log4net 背景:框架 NetFramework3.5 1. 新建控制台程序 2. 程序包管理器控制台中 增加 Nuget包 Install-Package lo ...

  4. 日志插件 log4net 的使用

    文本格式说明 可以记载的日志类别包括:FATAL(致命错误).ERROR(一般错误).WARN(警告).INFO(一般信息).DEBUG(调试信息). 文本参数说明 %m(message):输出的日志 ...

  5. 高性能PHP日志插件--Seaslog

    日志系统作为记录系统运行的信息,包括 用户输入,安全日志等,日志系统是不能影响用户的使用. 为什么需要记录日志? 既然日志系统增加了整个系统的开销,为什么我还需要它,这是因为日志能帮我们记录运行的很多 ...

  6. 日志管理-NLog日志框架简写用法

    本文转载:http://www.blogjava.net/qiyadeng/archive/2013/02/27/395799.html 在.net中也有非常多的日志工具,今天介绍下NLog.NLog ...

  7. 日志插件 log4net 的配置和使用

    文本格式说明 可以记载的日志类别包括:FATAL(致命错误).ERROR(一般错误).WARN(警告).INFO(一般信息).DEBUG(调试信息). 文本参数说明 %m(message):输出的日志 ...

  8. 日志框架 NLog

    这里按老规矩先进行和其它产品进行比较: 目前在.net平台存在两个比较老牌的日志框架分别为Log4net和NLog. 我们进行对这两种框架进行比较下 Log4net Log4net是一个老牌的日志框架 ...

  9. 【Azure 云服务】Azure Cloud Service (Extended Support) 云服务开启诊断日志插件 WAD Extension (Windows Azure Diagnostic) 无法正常工作的原因

    问题描述 在Azure中国区上面创建一个云服务(外延支持)后,根据官方文档(在云服务(外延支持)中应用 Azure 诊断扩展: https://docs.azure.cn/zh-cn/cloud-se ...

随机推荐

  1. Gerrit使用感受

    CodeReivew好工具,可以随业务需求灵活配置权限等.

  2. ACM的输入输出总结

    关于ACM的输入输出(一) 一般来说ACM的现场赛会规定输入输出 或者是文件输入标准输出 也可能是文件输入文件输出 如果没有规定的话那么一般就是标准的输入输出了 那说一下输入输出的重定向 一般用下面两 ...

  3. NSRegularExpression iOS自带的正则表达式

    以前做验证邮箱,电话号码的时候通常用第三方的正则表达式或者NSPredicate(点这里查看以前的文章),在后期,苹果推出了自己的正则表达式来提供给开发者调用,很方便,功能也强大. 具体可以查看官方文 ...

  4. review07

    java类可以有两种重要的成员:成员变量和方法,实际上java还允许有一种成员:内部类.内部类是在一个类中定义另一个类.内部类和外嵌类的关系如下: (1)内部类的外嵌类的成员变量在内部类中仍然有效,内 ...

  5. PyCharm 的升级、设置快捷方式

    05. PyCharm 的升级以及其他 PyCharm 提供了对 学生和教师免费使用的版本 教育版下载地址:https://www.jetbrains.com/pycharm-edu/download ...

  6. java: Comparable比较器,数组对象比较器

    Arrays只适合一个数组/对象内的数值进行比较, Comparable比较器(Compara)适合数组,对象,队列等排序, Comparable是一个接口类,实现此接口必须复写:compareTo ...

  7. Memcached之缓存雪崩,缓存穿透,缓存预热,缓存算法

    缓存雪崩 缓存雪崩可能是因为数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机. 解决思路: 1,采用加锁计数,或者使用合理的队列 ...

  8. php实现微信扫码自动登陆与注册功能

    本文实例讲述了php实现微信扫码自动登陆与注册功能.分享给大家供大家参考,具体如下: 微信开发已经是现在程序员必须要掌握的一项基本的技术了,其实做过微信开发的都知道微信接口非常的强大做起来也非常的简单 ...

  9. 【Prism】MEF版Commanding

    引言 接下来的是Commanding Demo的改造. DelegateCommand    WPF本身提供了一个RoutedCommand,然而没什么卵用.在Prism框架中提供了个更人性化的ICo ...

  10. 整理下PC和移动获取点击、移动坐标的代码和坑

    一.PC PC是通过鼠标点击和移动,相对比较简单,比如onmousedown.onmouseup.onmousemove.onmouseout鼠标按键按下.按键起来.鼠标在元素上移动.鼠标从元素上离开 ...