zoukankan      html  css  js  c++  java
  • Open-source Tutorial

    1. Installing NLog

    使用 NuGet 程序包管理器安装 NLog。如何使用 NuGet?

    遇到问题:我的项目是 .Net Framework 4.0 平台的,虽然 NLog 说明中是支持的,但是使用命令获取 NuGet 包会遇到如下错误:

    “NLog”已拥有为“NETStandard.Library”定义的依赖项。

    解决办法是安装低版本的 NLog ,我安装的是 4.0.0 的版本(此时最新版是 4.5.11 )。安装方法是在 NuGet 程序包管理器控制台中输入如下命令:

    PM> Install-Package NLog -Version 4.0.0
    

    解决办法不应该是使用旧版,事实上NLog最新版是支持 .Net Framework 4.0 版本的,不过需要在项目中添加 packages.config 配置文件,其内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <packages>
      <package id="NLog" version="4.5.11" targetFramework="net40" />
      <package id="NLog.Config" version="4.5.11" targetFramework="net40" />
    </packages>
    

    这样的方法也能解决其他 NuGet 包的类似问题。

    2. Configure NLog Targets for output

    只有配置好 NLog Targets,NLog 才会有输出。

    配置方法:

    • 项目中添加一个 NLog.config 的xml
    • 使用 NuGet 程序包管理器安装 NLog.Config。
    • 项目的根目录会生成两个文件:NLog.config 和 NLog.xsd
    • 将 NLog.config 文件的"复制到输出目录"属性设置为“始终复制”

    解释一下为什么要通过 NuGet 程序包管理器安装 NLog.Config ?

    这是因为这样会多生成 NLog.xsd 这个文件,这个文件可以让我们在在使用 VS IDE 编辑 NLog.config 这个文件时,提供智能感知,相当方便!

    以下是 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="logfile" xsi:type="File" 
                fileName="${basedir}/Logs/${shortdate}.txt" 
                layout="${time} | ${level:uppercase=false} | ${message}" 
                />
        <target name="logconsole" xsi:type="Console" />
      </targets>
    
      <rules>
        <logger name="*" minlevel="Info" writeTo="logconsole" />
        <logger name="*" minlevel="Debug" writeTo="logfile" />
      </rules>
    </nlog>
    

    遇到问题:忘记设置文件属性,导致无输出。

    3. Writing log messages

    重新打包,方便调用:

    public class NLogHelper
    {
        private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
    
        public enum LogLevel
        {
            Trace, Debug, Info, Warn, Error, Fatal
        }
    
        public static void WriteLog(string msg, LogLevel level)
        {
            switch (level)
            {
                case LogLevel.Trace:
                    logger.Trace(msg);
                    break;
                case LogLevel.Debug:
                    logger.Debug(msg);
                    break;
                case LogLevel.Info:
                    logger.Info(msg);
                    break;
                case LogLevel.Warn:
                    logger.Warn(msg);
                    break;
                case LogLevel.Error:
                    logger.Error(msg);
                    break;
                case LogLevel.Fatal:
                    logger.Fatal(msg);
                    break;
                default:
                    break;
            }
        }
    }
    
  • 相关阅读:
    沈阳集训day2
    ac自动机
    2018沈阳集训day1
    洛谷P1875 佳佳的魔法药水
    洛谷P1941 飞扬的小鸟
    Noip2016day2
    1123: [POI2008]BLO
    1718: [Usaco2006 Jan] Redundant Paths 分离的路径
    P3119 [USACO15JAN]草鉴定Grass Cownoisseur
    [LeetCode] Clone Graph
  • 原文地址:https://www.cnblogs.com/zdfffg/p/10184128.html
Copyright © 2011-2022 走看看