C#中使用Nlog日志工具

C#中使用Nlog日志工具

安装

通过Nuget安装,搜索Nlog, 然后安装NLog和NLog.Config(相当于一个配置模板)。

当然也可以自己在项目根目录下创建一个配置文件NLog.config,注意在NLog.config的属性中设置 Copy to Output Directory: Copy always

基本目录结构


<nlog>
    <targets>
        <target>target>
        <target>target>
    targets>
    <rules>
        <logger>logger>
        <logger>logger>
    rules>
nlog>

targets下面配置日志相关参数,比如日志存放的地址,名称,格式,大小等

rules下面配置目标输出规则 ,就是targets下面配置的在rules中使用。

NLog.Config使用模板


<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="c:\temp\nlog-internal.log">

  
  <variable name="myvar" value="myvalue"/>

  
  <targets>

    

    

    <target name="info" xsi:type="File" fileName="${basedir}/logs/info/log_${shortdate}.log" archiveAboveSize="500000"  encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/>
    <target name="debug" xsi:type="File" fileName="${basedir}/logs/debug/log_${shortdate}.log" archiveAboveSize="500000"  encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/>
    <target name="error" xsi:type="File" fileName="${basedir}/logs/error/log_${shortdate}.log" archiveAboveSize="500000"  encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/>
    <target name="trace" xsi:type="File" fileName="${basedir}/logs/trace/log_${shortdate}.log" archiveAboveSize="500000"  encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/>
    <target name="warn" xsi:type="File" fileName="${basedir}/logs/warn/log_${shortdate}.log" archiveAboveSize="500000"  encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/>
    <target name="console" xsi:type="ColoredConsole"  encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/>

  targets>

  <rules>
    
    <logger name="*"  level="Debug" writeTo="debug" />
    <logger name="*"  level="Info" writeTo="info"/>
    <logger name="*" level="Warn" writeTo="warn"/>
    <logger name="*" level="Trace" writeTo="trace"/>
    <logger name="*" level="Error" writeTo="error"/>
    
    <logger name="*" minlevel="Trace" writeTo="console"/>
    
  rules>
nlog>

添上argets ,和rules中的内容,模板用的Nuget下载的NLog.config。


简单使用

NLog.Logger logger = Nlog.LogManager.GetCurrentClassLogger(); 

logger.Debug("********");
logger.Info("********");
logger.Warn("********");
logger.Error("********");

##配置信息

###基本配置·

NLog 根节点 下的配置

  • autoReload:配置修改是否自动加载。

  • throwExceptions:日志出现异常时是否需要抛出异常,若配置为true日志记录异常时由于没有捕获异常,会导致程序挂掉。

  • internalLogLevel:表示nlog日志的执行日志记录等级。

  • internalLogFile:表示nlog日志的执行日志记录的位置。通过./XXXX的方式可以配置到程序的相对目录。

    日志等级

    Level FirstCharacter Ordinal
    Trace T 0
    Debug D 1
    Info I 2
    Warn W 3
    Error E 4
    Fatal F 5
    Off O 6

target (目标)

<targets async="true">  <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"            layout="${longdate} ${uppercase:${level}} ${message}" />targets>

通过将async设置为true可以异步保存日志,从而防止日志影响业务性能。

####xsi:type

输入类型,支持以下类型。

  • ColoredConsole : 使用可自定义的颜色将日志消息写入控制台。

  • Console - 将日志消息写入控制台。

  • Debug - 模拟目标-用于测试。

  • File - 将日志消息写入一个或多个文件。

  • Mail - 使用 smtp 协议或拾取文件夹通过电子邮件发送日志邮件。

  • Null - 丢弃日志消息。主要用于调试和基准测试

    具体参数说明

    <targets async= Boolean”>  //是否异步
      
    targets>
    

rules(规则)

<rules>    <logger name="*" minlevel="Debug" writeTo="f" />  rules>

Nlog节点下添加rules节点,rules节点下可以配置多个logger节点,每个logger节点即为一条约束。

  • name:logger名称,若为*则表示适用于所有日志,若我们某个target专门用于logdemo.test类的日志输出,则那么可以设置为logdemo.test.*,表示当前约束只允许命名空间为logdemo.test开头的日志输出。
  • minlevel:表示当前约束的最小等级,只有等于或大于该值的日志等级才会被记录。
  • writeTo:表示当前规则约束哪个target

参考文章

https://blog.csdn.net/jun502525164/article/details/40352253

https://blog.csdn.net/xishining/article/details/85219755

https://www.cnblogs.com/itjeff/p/6088149.html

你可能感兴趣的:(c#,Nlog)