ASP.NET MVC4 Web项目中使用Log4Net记录日志到文件和数据库。
下载与.netframework版本向对应的log4net.dll ,然后添加引用。下载地址:http://logging.apache.org/log4net/download_log4net.cgi
下载:log4net-2.0.8-bin-newkey.zip,然后找到对应的版本的DLL.
1.新建一个空的mvc4应用项目。
2.新建一个log4net.config配置文件,数据库的连接字符串改一下。
<?xml version="1.0" encoding="utf-8" ?> <log4net>
<!--定义输出到文件中-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<file value="log\\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<param name="MaxSizeRollBackups" value=""/>
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:%-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline"/>
</layout>
</appender> <!--定义输出到SQL Server数据库中-->
<!--
在SQL Server中创建表的SQL语句
CREATE TABLE [dbo].[Log] (
[Id] [int] IDENTITY (, ) NOT NULL,
[Date] [datetime] NOT NULL,
[Thread] [varchar] () NOT NULL,
[Level] [varchar] () NOT NULL,
[Logger] [varchar] () NOT NULL,
[Message] [varchar] () NOT NULL,
[Exception] [varchar] () NULL
);
--> <appender name="AdoNetAppenderSQLServer" type="log4net.Appender.AdoNetAppender">
<bufferSize value="" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="Data Source=LJJ-FF\LJJ;Initial Catalog=TestMvc;User ID=sa;Password=111111" />
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender> <root>
<level value="ALL" />
<!--文件形式记录日志-->
<appender-ref ref="RollingLogFileAppender"/>-->
<!--SQL Server数据库形式记录日志-->
<appender-ref ref="AdoNetAppenderSQLServer"/>
</root> </log4net>
3.在web.config中的<configuration>节点下面添加:
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
4.在Global.asax下面添加下面代码:
//应用程序启动时,自动加载配置log4Net
XmlConfigurator.Configure();
5.在AssemblyInfo.cs 下面添加代码:
//[assembly: log4net.Config.XmlConfigurator(Watch = true)]
//注意: ConfigFile 可以指定相对路径 和 绝对路径。 eg: /log/xxxx.log 或者 d://log//xxxx.log
//这句话是把节点单独拆分成log4net.config,这里像下面这样写。
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
//这个是log4net配置文件节点写在web.config里面用这句话
//[assembly: log4net.Config.XmlConfigurator(Watch = true)]
6.新建LogHelper类:
using log4net;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Web; namespace MvcLog4netToDataBase
{
public class LogHelper
{
/// <summary>
/// 调用Log4net写日志,日志等级为 :错误(Error)
/// </summary>
/// <param name="logContent">日志内容</param>
public static void WriteLog(string logContent)
{
WriteLog(null, logContent, Log4NetLevel.Error);
} /// <summary>
/// 调用Log4net写日志
/// </summary>
/// <param name="logContent">日志内容</param>
/// <param name="log4Level">记录日志等级,枚举</param>
public static void WriteLog(string logContent, Log4NetLevel log4Level)
{
WriteLog(null, logContent, log4Level);
} /// <summary>
/// 调用Log4net写日志
/// </summary>
/// <param name="type">类的类型,指定日志中错误的具体类。例如:typeof(Index),Index是类名,如果为空表示不指定类</param>
/// <param name="logContent">日志内容</param>
/// <param name="log4Level">记录日志等级,枚举</param>
public static void WriteLog(Type type, string logContent, Log4NetLevel log4Level)
{
ILog log = type == null ? LogManager.GetLogger("") : LogManager.GetLogger(type); switch (log4Level)
{
case Log4NetLevel.Warn:
log.Warn(logContent);
break;
case Log4NetLevel.Debug:
log.Debug(logContent);
break;
case Log4NetLevel.Info:
log.Info(logContent);
break;
case Log4NetLevel.Fatal:
log.Fatal(logContent);
break;
case Log4NetLevel.Error:
log.Error(logContent);
break;
}
}
} /// <summary>
/// log4net 日志等级类型枚举
/// </summary>
public enum Log4NetLevel
{
[Description("警告信息")]
Warn = ,
[Description("调试信息")]
Debug = ,
[Description("一般信息")]
Info = ,
[Description("严重错误")]
Fatal = ,
[Description("错误日志")]
Error =
}
}
7.建HomeController
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using log4net; namespace MvcLog4netToDataBase.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/ public ActionResult Index()
{
//简单写日志
LogHelper.WriteLog("简单写日志");
//写Debug日志
LogHelper.WriteLog("写Debug日志", Log4NetLevel.Debug);
//带有类型和日志等级的日志,Index 是类名
LogHelper.WriteLog(typeof(HomeController), "带有类型和日志等级的日志", Log4NetLevel.Info);
return View();
} }
}
8.建一个Index视图。
9.运行得出结果:
ASP.NET MVC4 Web项目中使用Log4Net记录日志到文件和数据库。的更多相关文章
- ASP.NET MVC Web项目中使用Log4Net记录日志,并按照日志类型分文件存储
1.创建MvcLog4Net项目 2.创建 空的MVC项目 3.项目创建完成的效果 4.选择项目,点击鼠标右键,在弹出菜单中选择“管理解决方案的 NuGet 程序包” 5. 在NuGet浏览界面: 点 ...
- asp.net Web项目中使用Log4Net进行错误日志记录
使用log4net可以很方便地为应用添加日志功能.应用Log4net,开发者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能.同时,通过外部配置文件,用户可以不用重新编译程序就能 ...
- Web项目中使用Log4net 案例
简介: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题. 经验表明,日 ...
- web项目中的 log4net的配置
最近用log4net,网上查了很多资料,照着网上的配置大多都不管用,可能我还是有什么地方配置的不对.看出来的朋友平指出.下面是我自己亲测的,可以用! 1.web项目中的web.config 配置log ...
- ASP.NET MVC2 Web项目中公用类库的问题
ASP.NET WEB窗体 网站中,加入公用类文件的话,系统会很自动并殷勤的问你,说要不要把它存放在文件夹 App_Code 里.一旦加入,全站都可以很方便地加以使用,一点问题没有. 这种习以为常的方 ...
- 在.net core web 项目中使用Nlog记录日志
第1步,添加NLog.Web.AspNetCore包引用 方法1 在项目上右击“依赖项”---“管理Nuget程序包(N)…”,然后在浏览对话框中输入“NLog.Web.AspNetCore”查找包, ...
- 初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序
初入码田--ASP.NET MVC4 Web应用开发之一 实现简单的登录 初入码田--ASP.NET MVC4 Web应用开发之二 实现简单的增删改查 2016-07-29 在此之前,需要一台电脑( ...
- angular2+typescript在asp.net MVC Web项目上的实现
网上现在还没有关于angular2+typescript在asp.net mvc web项目上的实现的系统介绍,这里我也只是探索到了一个简单的方式,还有很多问题没能解决.但是能有个好的开头也值得记录一 ...
- 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入
在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...
随机推荐
- 吴裕雄 python 人工智能——基于Mask_RCNN目标检测(1)
import os import sys import random import math import numpy as np import skimage.io import matplotli ...
- git 工具常见命令
1.git是什么 git是分布式版本管理工具,一台电脑既可以是客户端,也可以是服务端.工作过程中可以断开网络. git中的三个概念: 1.版本库:在初始化git版本库之后会生成一个隐藏的文件, .gi ...
- ASP.NET Core搭建多层网站架构【9.1-使用Autofac代替原生的依赖注入】
2020/01/30, ASP.NET Core 3.1, VS2019, Autofac.Extensions.DependencyInjection 5.0.1 摘要:基于ASP.NET Core ...
- 《JavaScript高级程序设计》读书笔记(四)变量、作用域和内存问题
内容---理解基本类型和引用类型的值---理解执行环境---理解垃圾收集 --JavaScript变量松散类型的本质--决定了它只是在特定时间用于保存特定值的一个名字而已--变量的值及其数据类型可以在 ...
- Wordpress-微信机器人高级版
微信机器人高级版是我爱水煮鱼开发的一款插件,功能很棒,运行此插件需要同时开启WPJAM Basic插件. 高级版5.0 版本对服务器要求非常高,只支持 Linux 服务器,PHP 要求 7.2 及以上 ...
- C# 面试编程算法题
求以下表达式的值: 1. 1 - 2 + 3 - 4 + … + m public static int Foo1(int m) { ; ; i <= m; i++) { == ) { sum ...
- 【SSM】Log4j 日志配置
1.log4j.properties ### 配置根 ### # log4j.rootLogger = debug,console ,fileAppender,dailyRollingFile,ROL ...
- RFID学习
RFID:射频识别卡有读卡器和电子标签(有源/无源/半有源)组成,工作频率有LF/HF/UHF/MF,低频的通讯距离近(1m)常用来做门禁:高频的通讯距离远可以批量读取. 无源的轻巧/防拆一致性好,在 ...
- ajax发送GET和POST请求
1.ajax-get请求demo <script> document.getElementById("buttonname").onclik=function(){ / ...
- java之md5加密算法
/** * @author * */ public class MD5 { private static final String[] digital = { "0", " ...