zoukankan      html  css  js  c++  java
  • NLog简单配置与使用

    对项目添加NLog

    安装完成后,在项目里面会自动引入该引入的dll,并且会添加如下两个文件

     

    NLog的配置主要是在这个config文件里。当然也可以将这个文件里面的nlog节点复制到项目配置文件App.config/Web.config里面。

     NLog的配置文件主要有3个节点variable,targets,rules。

    variable节点用于定义一些变量

    <targets /> - 定义日志的目标/输出,下级是<target>

    <rules /> - 定义日志的路由规则,下级是<logger>
     
    简单配置:
    <target name="console" xsi:type ="Console" />   这个是用于在控制台中输出日志信息,一般不配置这个

     下面这两个是用于在文本文件里面写入日志,fileName表示日志文件的路径,layout表示日志的格式。大括号里面的变量是系统预定义的,

    当然也可以在variable节点里面自定义

    <target name="info" xsi:type="File"
    fileName="${basedir}/Logs/Info/${shortdate}/info.txt"
    maxArchiveFiles="30"
    layout="${longdate} | ${level:uppercase=false} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}" />
    <target name="error" xsi:type="File"
    fileName="${basedir}/Logs/Error/${shortdate}/error.txt"
    maxArchiveFiles="30"
    layout="${longdate} | ${level:uppercase=false} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}" />

    下面这个是将日志写入数据库的配置,这里配置的是SqlServer,当然还可以配置其他数据库

    <target xsi:type="Database"
    name="DatabaseFile"
    dbProvider="System.Data.SqlClient"
    commandText="Insert into ErrorLog(ID, Content, CreateTime) Values(@id, @content, @createTime);"
    connectionString="data source=.;initial catalog=pay.log;user id=sa;password=sa;">
    <parameter name="@id" layout = "${event-context:item=id}"/>
    <parameter name="@content" layout = "${event-context:item=content}" />
    <parameter name="@createTime" layout = "${date}"/>

    结合上面的target节点,配置如下的路由节点,这些logger节点在rules节点下

    <logger name="*" writeTo="DatabaseFile" />
    <logger name="*" minlevel="Info" writeTo="info" />
    <logger name="*" minlevel="Error" writeTo="error" />
    <logger name="*" writeTo="console" />

    代码中调用NLog:

    public static void DBLog()
            {
                //log.Error("错误日志");
                //log.Info("信息日志");
           //log.Fatal("fatal日志"); LogEventInfo lei = new LogEventInfo(); lei.Properties.Add("id", Guid.NewGuid().ToString()); lei.Properties.Add("content", "sdfsd3222第三代2222"); //lei.Properties.Add("createTime", DateTime.Now); lei.Level = LogLevel.Info; log.Log(lei); }

    上面注释的3行分别对应target节点里面name为error和info这两个节点配置,fatal的日志和error的日志写在了同一个文件里面。

    还有一个统一的方法就是log.Log(LogLevel.Error, "错误2553");根据参数来确定日志的级别,但是这个方法要注意的是,如果参数是error,

    那么会在info和error两个地方写入日志,但是只有info的时候,就只在info下有日志。

    根据target的配置,调用函数后,日志文件在binReleaseLogs下

     后面的代码是将日志写入数据库的,对应的target节点是DatabaseFile。lei.Level这个属性必须设置,除了为LogLevel.Off外,其他的都可以

    将日志写入数据库。要注意的是,在此之前确保数据库里面有相应的表。

    
    
  • 相关阅读:
    系统UINavigationController使用相关参考
    iOS工程集成支付宝错误Undefined symbols for architecture armv7
    Xcode工程使用CocoaPods管理第三方库新建工程时出现错误
    Xcode报错:“Your build settings specify a provisioning profile with the UUID..... however, no such provisioning profile was found”
    iOS开发问题之Could not instantiate class named NSLayoutConstraint
    UICollectionView使用相关博文链接
    UIRefreshControl的使用
    iOS沙盒路径的查看和使用
    【汇总】涉及iOS&iPhone开发相关文章汇总
    【汇总】iOS开发及Xcode使用中遇到的一些报错问题汇总
  • 原文地址:https://www.cnblogs.com/jin-/p/9430344.html
Copyright © 2011-2022 走看看