首页 > 编程语言 >C# NLog 自用配置

C# NLog 自用配置

时间:2024-03-31 23:56:13浏览次数:23  
标签:level C# ConsoleOutputColor LogLevel 自用 new NLog Targets

打印到控制台

日志保存到NLog目录下

每天保存一个文件夹

按类名保存日志文件 日志内容标注日志等级

  • 代码中配置方式
        var config = new NLog.Config.LoggingConfiguration();

        // 定义文件日志目标
        var timeLevelClassFileTarget = new NLog.Targets.FileTarget("timeLevelClassFile")
        {
            FileName = "NLog/${shortdate}/${logger}.log",
            Layout = "${longdate} ${level:uppercase=true} ${logger} ${message} ${exception:format=tostring}"
        };
        config.AddTarget("timeLevelClassFile", timeLevelClassFileTarget);

        // 定义控制台日志目标
        var consoleTarget = new NLog.Targets.ColoredConsoleTarget("console")
        {
            Layout = "${date:format=HH\\:mm\\:ss} ${level:uppercase=true} ${logger} ${message} ${exception:format=tostring}",
            UseDefaultRowHighlightingRules = false
        };
        consoleTarget.RowHighlightingRules.Add(new NLog.Targets.ConsoleRowHighlightingRule("level == LogLevel.Debug", NLog.Targets.ConsoleOutputColor.Gray, NLog.Targets.ConsoleOutputColor.Black));
        consoleTarget.RowHighlightingRules.Add(new NLog.Targets.ConsoleRowHighlightingRule("level == LogLevel.Info", NLog.Targets.ConsoleOutputColor.Green, NLog.Targets.ConsoleOutputColor.Black));
        consoleTarget.RowHighlightingRules.Add(new NLog.Targets.ConsoleRowHighlightingRule("level == LogLevel.Warn", NLog.Targets.ConsoleOutputColor.Yellow, NLog.Targets.ConsoleOutputColor.Black));
        consoleTarget.RowHighlightingRules.Add(new NLog.Targets.ConsoleRowHighlightingRule("level == LogLevel.Error", NLog.Targets.ConsoleOutputColor.Red, NLog.Targets.ConsoleOutputColor.Black));
        consoleTarget.RowHighlightingRules.Add(new NLog.Targets.ConsoleRowHighlightingRule("level == LogLevel.Fatal", NLog.Targets.ConsoleOutputColor.Red, NLog.Targets.ConsoleOutputColor.White));
        config.AddTarget("console", consoleTarget);

        // 定义规则:将所有信息级别及以上的日志写入文件和控制台
        config.LoggingRules.Add(new NLog.Config.LoggingRule("*", NLog.LogLevel.Info, timeLevelClassFileTarget));
        config.LoggingRules.Add(new NLog.Config.LoggingRule("*", NLog.LogLevel.Info, consoleTarget));

        NLog.LogManager.Configuration = config;


        var Logger = NLog.LogManager.GetCurrentClassLogger();
        Logger.Info("info");
        Logger.Debug("Debug");
        Logger.Error("Error");
        Logger.Warn("Warn");
        Logger.Fatal("Fatal");

 

  • appsettings配置方式
  "NLog": {
    "throwConfigExceptions": true,
    "targets": {
      "timeLevelClassFile": {
        "type": "File",
        "fileName": "NLog/${shortdate}/${logger}.log",
        "layout": "${longdate} ${level:uppercase=true} ${logger} ${message} ${exception:format=tostring}"
      },
      "console": {
        "type": "ColoredConsole",
        "layout": "${date:format=HH\\:mm\\:ss} ${level:uppercase=true} ${logger} ${message} ${exception:format=tostring}",
        "UseDefaultRowHighlightingRules": false,
        "rowHighlightingRules": [
          {
            "condition": "level == LogLevel.Debug",
            "foregroundColor": "Gray"
          },
          {
            "condition": "level == LogLevel.Info",
            "foregroundColor": "Green"
          },
          {
            "condition": "level == LogLevel.Warn",
            "foregroundColor": "Yellow"
          },
          {
            "condition": "level == LogLevel.Error",
            "foregroundColor": "Red"
          },
          {
            "condition": "level == LogLevel.Fatal",
            "foregroundColor": "Red",
            "backgroundColor": "White"
          }
        ]
      }
    },
    "rules": [
      {
        "logger": "*",
        "minLevel": "Information",
        "writeTo": "timeLevelClassFile"
      },
      {
        "logger": "*",
        "minLevel": "Information",
        "writeTo": "console"
      }
    ]
  },

 

  • 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">

    <targets>
        <target name="timeLevelClassFile" xsi:type="File"
                fileName="NLog/${shortdate}/${logger}.log"
                layout="${longdate} ${level:uppercase=true} ${logger} ${message} ${exception:format=tostring}" />

        <target name="console" xsi:type="ColoredConsole"
                layout="${date:format=HH\\:mm\\:ss} ${level:uppercase=true} ${logger} ${message} ${exception:format=tostring}">
            <highlight-row foregroundColor="Gray" condition="level == LogLevel.Debug" />
            <highlight-row foregroundColor="Green" condition="level == LogLevel.Info" />
            <highlight-row foregroundColor="Yellow" condition="level == LogLevel.Warn" />
            <highlight-row foregroundColor="Red" condition="level == LogLevel.Error" />
            <highlight-row foregroundColor="Red" backgroundColor="White" condition="level == LogLevel.Fatal" />
        </target>
    </targets>

    <rules>
        <logger name="*" minlevel="Info" writeTo="timeLevelClassFile" />
        <logger name="*" minlevel="Info" writeTo="console" />
    </rules>
</nlog>

 

标签:level,C#,ConsoleOutputColor,LogLevel,自用,new,NLog,Targets
From: https://www.cnblogs.com/Echoxxx/p/18107515

相关文章

  • Windows和Linux系统下的Conda环境迁移
    Motivation​ 大家在学习Python的过程中,可能经常会遇到下面两种情况:同一份代码,别人配置conda环境可以跑通,但你配置了N天,还不知道哪一步出现了差错,仍然跑不通代码,conda环境卸载了又重新下,出现了死循环......你可能先在一台服务器上跑通了代码,为了提高效率,你又想在其它服务器上......
  • CF1935F Andrey's Tree (树上乱搞)
    题意:有一颗n个节点的数,需要解决以下问题:先去掉节点v和与其相连的边;然后在剩余的图上加若干条边,在(x,y)之间连边的代价是∣x−y∣。求使得图连通的最小代价。计算删除顶点v后,每个顶点1≤v≤n至少需要花费多少金币才能使图形重新成为一棵树,以及需要添加哪些边。做法:首先可......
  • MDK中如何使用STM32CubeMX来配置工程和生成初始化代码?
    在MDK中使用STM32CubeMX配置工程和生成初始化代码是一个高效的开发流程,它可以显著提高开发效率并减少手动配置错误。以下是详细的步骤和示例代码,展示如何使用STM32CubeMX来配置工程,并将其与MDK结合使用。1.安装STM32CubeMX首先,访问STMicroelectronics的官方网站,下载并安......
  • C语言每日一题
    1.题目2.分析这里考察的是运算符运算规则的问题,影响运算符求值顺序的主要是运算符的优先级和结合性。优先级:主要是不同优先级运算符之间的运算规则结合性:主要是优先级相同时运算符需要遵守的运算规则本题中的表达式,有以下4种运算符,它们是具有不同优先级的运算符,因此......
  • std::function
    std::functional 是C++标准库中的一个模板类,它是对可调用对象的一种通用包装器。std::functional 允许你将任何可调用对象(包括函数、函数对象、lambda表达式、以及其他 std::functional 对象)当作一个统一的对象来处理。它通常与C++的算法库、容器库以及某些需要可调用对......
  • 【C语言】从零开始:用C语言实现顺序表
    欢迎来CILMY23的博客本篇主题为 从零开始:用C语言实现顺序表个人主页:CILMY23-CSDN博客C语言专栏:http://t.csdnimg.cn/hQ5a9Python系列专栏:http://t.csdnimg.cn/HqYo8上一篇C语言博客: http://t.csdnimg.cn/I4Zgf感谢观看,支持的可以给个一键三连,点赞关注+收藏。目录一......
  • 五、Yocto集成QT5(基于Raspberrypi 4B)
    Yocto集成QT5本篇文章为基于raspberrypi4B单板的yocto实战系列的第五篇文章:一、yocto编译raspberrypi4B并启动二、yocto集成ros2(基于raspberrypi4B)三、Yocto创建自定义的layer和image四、Yocto创建静态IP和VLAN本章节实操代码请查看github仓库:meta-rpi-robot......
  • 故障诊断模型 | 基于LSTM长短期记忆神经网络的滚动轴承故障诊断(Pytorch)
    概述LSTM(LongShort-TermMemory)是一种常用的循环神经网络(RNN),在时间序列数据处理任务中表现优秀,可用于滚动轴承故障诊断。滚动轴承故障通常会导致振动信号的变化,这些振动信号可以被视为时间序列数据。LSTM能够捕捉时间序列之间的依赖关系,从而对滚动轴承的故障进行诊断。......
  • Oracle 低代码平台 Apex 最新版本 23.2 安装过程
    趁春节快结束前,安装了一把APEX,到目前为此,APEX最新版本为23.2,23.2和21版本有一些变化,只是用于验证,我是使用的单独模式,没有安装TOMAT,下面列一下安装过程:1.环境  ORACLELINUX9.3  GI19.22  ORACLE19.22  CDB  APEX23.22.使用PDB用于APEX  ......
  • macOS 磁盘设备文件命名规则
    macOS系统使用不同于Linux的磁盘设备命名规则。在macOS中,磁盘设备和分区被命名并通过/dev目录访问,类似于Linux和UNIX系统。但是,macOS的命名规则遵循特定的模式。macOS磁盘设备命名概述:1.主磁盘设备在macOS中,主磁盘通常被命名为/dev/disk0。这个设备是你的主启......