NLog简介

  NLog是一个简单灵活的.NET日志记录类库,NLog的API非常类似于log4net,配置方式非常简单。支持多种形式输出日志:文本文件、系统日志、数据库、控制台、邮箱等

1.NLog简介

在nuget控制台输入安装nlog命令: Install-Package NLog.Config
Nlog配置的方式常用的有两种
  1.直接在使用应用程序配置文件或者web的配置文件(app.config / web.config)
  2.NLog.config 这个是比较好的一个形式(推荐)
配置文件中的主要标签是:targets和rules
  <targets /> - 定义日志的目标/输出,下级是<target>
  <rules /> - 定义日志的路由规则,下级是<logger>

2.标签介绍

<nlog>标签

  autoReload            修改配置文件后是否允许自动加载无须重启程序
  throwExceptions     内部日志系统抛出异常(建议throwExceptions的值设为“false”,这样由于日志引发的问题不至于导致应用程序的崩溃。)
  internalLogLevel    可选Trace|Debug|Info|Warn|Error|Fatal决定内部日志的级别 Off 关闭
  internalLogFile       把内部的调试和异常信息都写入指定文件里

<targets>标签

<target />定义了日志的输出,可以设置文件名称和格式,输出方式。
  name                      自定义该target的名字,可供rule规则里使用
  type                        定义类型,官方提供了很多可选类型,常用的还是 File \Database \Colored Console\ Mail
  layouts                   用来规定布局样式,语法“${属性}”,可以把上下文信息插入到日志中,官方提供的可以用的属性见文末附录

<rules>标签

<logger/>定义日志的记录规则,记录范围
  name          记录者的名字
  minlevel      最低级别
  maxlevel     最高级别
  level         单一日志级别
  levels               一系列日志级别,由逗号分隔。

<variable>标签

变量定义
<!-- 定义变量var1-->
<variable name="var1" value="${basedir}/logs"/>
<targets>
<!-- 使用变量var1-->
  <target name="File" xsi:type="File" fileName="${var1}/${shortdate}.txt"/>
</targets>

3.一个简单的栗子

把日志记录到彩色控制台,log文本文件和mysql数据库。首先添加Nlog.config文件如下,放在控制台项目的bin/debug目录下

<?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"
      autoReload="true">
  <targets>
    <!--控制台彩色打印-->
    <target name="console" xsi:type="ColoredConsole" useDefaultRowHighlightingRules="false" layout="${longdate}|${pad:padding=5:inner=${level:uppercase=true}}|${message}" >
      <highlight-row condition="level == LogLevel.Debug" foregroundColor="DarkGray" />
      <highlight-row condition="level == LogLevel.Info" foregroundColor="Gray" />
      <highlight-row condition="level == LogLevel.Warn" foregroundColor="Yellow" />
      <highlight-row condition="level == LogLevel.Error" foregroundColor="Red" />
      <highlight-row condition="level == LogLevel.Fatal" foregroundColor="Red" backgroundColor="White" />
    </target>

    <!--写入log文本文件-->
    <target name="file" xsi:type="AsyncWrapper" queueLimit="5000" overflowAction="Discard">
      <target xsi:type="File" fileName="${basedir}/logs/nlog/AT___${shortdate}.log" layout="----------------日志记录开始----------------${newline}【日志时间】:${longdate} ${newline}【日志级别】:${level:uppercase=true}${newline}【异常相关信息】${newline}${message}${newline}${newline}${newline}" />
    </target>

    <!--写入mysql数据库-->
    <target name="db" xsi:type="AsyncWrapper" queueLimit="5000" overflowAction="Discard">
      <target type="Database" dbProvider="MySql.Data.MySqlClient" connectionString="server=10.0.10.66;port=3306;database=logedemo;uid=root;pwd=123321;SslMode=none">
        <commandText>
          INSERT INTO tbLog(Timestamp,Level,Message,StackTrace) VALUES(@time_stamp, @level, @message, @stacktrace);
        </commandText>
        <!--database connection parameters-->
        <parameter name="@time_stamp" layout="${date}" />
        <parameter name="@level" layout="${level:uppercase=true}" />
        <parameter name="@message" layout="${message}" />
        <parameter name="@stacktrace" layout="${stacktrace}" />
      </target>
    </target>
  </targets>
  <rules>
    <logger name="*" minlevel="Debug" writeTo="console" />
    <logger name="*" minlevel="Info" writeTo="db" />
    <logger name="*" minlevel="Debug" writeTo="file" />
  </rules>
</nlog>
View Code

相关文章:

  • 2018-01-06
  • 2021-07-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-24
  • 2021-07-15
  • 2022-12-23
  • 2022-12-23
  • 2020-01-01
  • 2021-09-16
相关资源
相似解决方案