NLog在MVC中使用

在site根目录新建NLog.config

<?xml version="1.0"?>
<configuration>
<nlog throwExceptions="false">
<variable name="logDirectory" value="${basedir}/logs" />
<targets async="true">
<!--<default-target-parameters
type="File"
archiveAboveSize="50485760"
maxArchiveFiles="50"
archiveNumbering="Rolling"
keepFileOpen="false"
layout="${longdate} ${callsite} ${message} ${exception:format=Message, Type, ShortType, ToString, Method, StackTrace}"/>-->
<target name="f1"
type="File"
fileName="${logDirectory}/${shortdate}.html">
<layout>
<![CDATA[
level:${level}<br />
longdate:${longdate}<br />
message:${message}<br />
]]>
</layout>
</target>
<target name="f2"
type="Mail"
header="----------"
footer="----------"
layout="${longdate} ${level} ${callsite} ${message} ${exception:format=Message, Type, ShortType, ToString, Method, StackTrace}"
html="false"
addNewLines="true"
subject="${message}"
to=""
from=""
body="${longdate} ${level} ${callsite} ${message} ${exception:format=Message, Type, ShortType, ToString, Method, StackTrace}"
smtpUserName="UserName"
enableSsl="false"
smtpPassword="Password"
smtpAuthentication="Basic"
smtpServer="smtp.hooyes.com"
smtpPort="25" />
</targets>
<rules>
<logger name="aotu" levels="Debug,Error" writeTo="f1" />
<!--<logger name="*" minlevel="Error" writeTo="f2" />-->
</rules>
</nlog>
</configuration>
<?xml version="1.0"?>
<configuration>
<nlog throwExceptions="false">
<variable name="logDirectory" value="${basedir}/logs" />
<targets async="true">
<!--<default-target-parameters
type="File"
archiveAboveSize="50485760"
maxArchiveFiles="50"
archiveNumbering="Rolling"
keepFileOpen="false"
layout="${longdate} ${callsite} ${message} ${exception:format=Message, Type, ShortType, ToString, Method, StackTrace}"/>-->
<target name="f1"
type="File"
header="------------------------------Start------------------------------"
footer="------------------------------End------------------------------"
fileName="${logDirectory}/${shortdate}.txt"
layout="${longdate} [${level}]]] ${message}"
/>
<target name="f2"
type="Mail"
header="----------"
footer="----------"
layout="${longdate} ${level} ${callsite} ${message} ${exception:format=Message, Type, ShortType, ToString, Method, StackTrace}"
html="false"
addNewLines="true"
subject="${message}"
to=""
from=""
body="${longdate} ${level} ${callsite} ${message} ${exception:format=Message, Type, ShortType, ToString, Method, StackTrace}"
smtpUserName="UserName"
enableSsl="false"
smtpPassword="Password"
smtpAuthentication="Basic"
smtpServer="smtp.hooyes.com"
smtpPort="25" />
</targets>
<rules>
<logger name="aotu" levels="Debug,Error" writeTo="f1" />
<!--<logger name="*" minlevel="Error" writeTo="f2" />-->
</rules>
</nlog>
</configuration>

添加LogHelper class

/***********************************************************************
* Copyright (C) 2013 Newegg Corporation
* All rights reserved.
*
* Author: Aotu Li (Aotu.E.Li@Newegg.com)
* Date: 12/7/2013 3:59:11 PM
* Usage:
*
* RevisionHistory
* Date Author Description
*
* ***********************************************************************/ using NLog; namespace Mvc_NLogDEMO
{
public class LogHelper
{
private static Logger logger;
private static string logRuleName = "aotu";
static LogHelper()
{
logger = LogManager.GetLogger(logRuleName);
logger.LoggerReconfigured += logger_LoggerReconfigured;
} static void logger_LoggerReconfigured(object sender, System.EventArgs e)
{
logger = LogManager.GetLogger(logRuleName);
} public static void WirtError(string message)
{
logger.Log(LogLevel.Error, message);
} public static void WirtDebug(string message)
{
logger.Log(LogLevel.Debug, message);
}
}
}
public class LogHelper
{
private static Logger logger;
private static string logRuleName = "aotu";
static LogHelper()
{
logger = LogManager.GetLogger(logRuleName);
logger.LoggerReconfigured += logger_LoggerReconfigured;
} static void logger_LoggerReconfigured(object sender, System.EventArgs e)
{
logger = LogManager.GetLogger(logRuleName);
} public static void WirtError(string message)
{
logger.Log(LogLevel.Error, message);
} public static void WirtDebug(string message)
{
logger.Log(LogLevel.Debug, message);
}
}

参考文档:https://github.com/nlog/nlog/wiki

NLog在MVC中使用的更多相关文章

  1. [.Net Core] 在 Mvc 中简单使用日志组件

    在 Mvc 中简单使用日志组件 基于 .Net Core 2.0,本文只是蜻蜓点水,并非深入浅出. 目录 使用内置的日志组件 简单过渡到第三方组件 - NLog 使用内置的日志 下面使用控制器 Hom ...

  2. .NetCore MVC中的路由(2)在路由中使用约束

    p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; orphans: 2; widows: 2 ...

  3. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  4. Asp.Net MVC中使用StreamReader读取“Post body”之应用场景。

    场景:有三个市场(Global.China.USA),对前台传过来的数据有些验证需要细化到每个市场去完成. 所以就出现了基类(Global)和派生类(China.USA) 定义基类(Global)Pe ...

  5. 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  6. ASP.NET Core MVC 中的 [Controller] 和 [NonController]

    前言 我们知道,在 MVC 应用程序中,有一部分约定的内容.其中关于 Controller 的约定是这样的. 每个 Controller 类的名字以 Controller 结尾,并且放置在 Contr ...

  7. ASP.NET MVC中利用AuthorizeAttribute实现访问身份是否合法以及Cookie过期问题的处理

    话说来到上海已经快半年了,时光如白驹过隙,稍微不注意,时间就溜走了,倒是没有那么忙碌,闲暇之际来博客园还是比较多的,记得上次在逛博问的时候看到有同志在问MVC中Cookie过期后如何作相关处理,他在阐 ...

  8. 4.在MVC中使用仓储模式进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 系列目录: ...

  9. 5.在MVC中使用泛型仓储模式和工作单元来进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

随机推荐

  1. 图片轮播插件Nivo Slider

    推荐:图片轮播插件Nivo Slider         因为项目需要一款切换样式多一些的轮播插件,不经意找到了NivoSlider,非常好用,比bootstrap要好用,而且样式丰富.值得注意的是, ...

  2. C#获取友好时间差

    /// <summary> /// 获取时间差 /// </summary> /// <param name="dtOld">要减的时间< ...

  3. [置顶] WPF数据修改demo

    今天晚上研究了下wpf,现在把代码贴出来供大家学习参考 sql语句: create table userinfos ( ContactID  int primary key identity(1,1) ...

  4. [NLP自然语言处理]计算熵和KL距离,java实现汉字和英文单词的识别,UTF8变长字符读取

    算法任务: 1. 给定一个文件,统计这个文件中所有字符的相对频率(相对频率就是这些字符出现的概率——该字符出现次数除以字符总个数,并计算该文件的熵). 2. 给定另外一个文件,按上述同样的方法计算字符 ...

  5. IOS开发之路二十一(UIWebView加载本地html)

    挺简单不多说的直接代码: // // ViewController.h // JSAndJson // // Created by WildCat on 13-9-8. // Copyright (c ...

  6. EasyUI Editable Tree

    效果如图: Create Tree <ul id="tt"></ul> $('#tt').etree({ url: 'tree_data.json', cr ...

  7. key-list类型内存数据引擎介绍及使用场景

    “互联网数据目前基本使用两种方式来存储,关系数据库或者key value.但是这些互联网业务本身并不属于这两种数据类型,比如用户在社会化平台中的关系,它是一个list,如果要用关系数据库存储就需要转换 ...

  8. ios学习笔记(一)之Object-C

    一:Objective-C语言基础 二:Objective-C类与继承和协议 一:Objective-C语言基础: 1.1)#import 包含头文件  与#include 作用相同 1.2)Obje ...

  9. 【c++】指针参数是如何传递内存的

    [c++]指针参数是如何传递内存的   如果函数的参数是一个指针,不要指望用该指针去动态申请内存.如下: void GetMemory(char *p, int num) { p = (char *) ...

  10. 10169 - Urn-ball Probabilities !

    描述:有两个罐子,一个罐子里有一个红球,另一个罐子里有一个红球和一个白球,每次从两个罐子里各取一个球,然后在向每个罐子里各加一个白球,一次取到两个红球时就结束取球,求n次取球中至少一次为取球为红球的概 ...