我准备把log4net的实现方法放在一个类库项目中,别的项目直接引用该类库,即可进行日志的记录,操作步骤如下:

1.下载log4net.dll文件

2.在解决方案下创建类库项目

3.把log4net.dll添加到上面创建的类库引用中

4.在web项目下,创建单独的log4net配置文件(当然,也可以写在web.config里),配置文件的内容如下

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<!--定义输出到文件中-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<file type="log4net.Util.PatternString" value="C:\iWSCloud\%date{yyyy-MM}\AllLogs\ALL_%date{yyyy-MM-dd}.log" />
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd"/>
<staticLogFileName value="true"/>
<param name="MaxSizeRollBackups" value=""/>
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<!--样例:-- ::, [] INFO File - info-->
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<!--文件形式记录日志-->
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
</configuration>

5.在类库项目的AssemblyInfo.cs 文件中添加对web项目log4net.config文件的监视,代码为

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

6.在类库项目中添加类文件Logs.cs,创建日志帮助方法,代码为

using log4net;
using System; namespace myTest //出于保护,命名控件名进行了更改
{
public class Logs
{
#region log4net实例化声明
private static readonly ILog log;
#endregion /// <summary>
/// 静态构造方法
/// </summary>
static Logs()
{
//GetLogger("File"),日志输出“ File - 日志信息”
//如果是GetLogger(typeof(类名)),则日志输出 “类名 - 日志信息”。
//例如:GetLogger(typeof(Logs)),日志输出“Logs - 日志信息”
log = LogManager.GetLogger("File");
} /// <summary>
/// Debug级别日志
/// </summary>
/// <param name="message">信息</param>
public static void LogDebug(Object message)
{
if (log.IsDebugEnabled)
{
log.Debug(message);
}
} /// <summary>
/// Debug级别日志
/// </summary>
/// <param name="message">信息</param>
/// <param name="exception">异常</param>
public static void LogDebug(Object message, Exception exception)
{
if (log.IsDebugEnabled)
{
log.Debug(message, exception);
}
} /// <summary>
/// Info级别日志
/// </summary>
/// <param name="message">信息</param>
public static void LogInfo(Object message)
{
if (log.IsInfoEnabled)
{
log.Info(message);
}
} /// <summary>
/// Info级别日志
/// </summary>
/// <param name="message">信息</param>
/// <param name="exception">异常</param>
public static void LogInfo(Object message, Exception exception)
{
if (log.IsInfoEnabled)
{
log.Info(message,exception);
}
} /// <summary>
/// Warn级别日志
/// </summary>
/// <param name="message">信息</param>
public static void LogWarn(Object message)
{
if (log.IsWarnEnabled)
{
log.Warn(message);
}
} /// <summary>
/// Warn级别日志
/// </summary>
/// <param name="message">信息</param>
/// <param name="exception">异常</param>
public static void LogWarn(Object message, Exception exception)
{
if (log.IsWarnEnabled)
{
log.Warn(message, exception);
}
} /// <summary>
/// Error级别日志
/// </summary>
/// <param name="message">信息</param>
public static void LogError(Object message)
{
if (log.IsErrorEnabled)
{
log.Error(message);
}
} /// <summary>
/// Error级别日志
/// </summary>
/// <param name="message">信息</param>
/// <param name="exception">异常</param>
public static void LogError(Object message, Exception exception)
{
if (log.IsErrorEnabled)
{
log.Error(message, exception);
}
} /// <summary>
/// Fatal级别日志
/// </summary>
/// <param name="message">信息</param>
public static void LogFatal(Object message)
{
if (log.IsFatalEnabled)
{
log.Fatal(message);
}
} /// <summary>
/// Fatal级别日志
/// </summary>
/// <param name="message">信息</param>
/// <param name="exception">异常</param>
public static void LogFatal(Object message, Exception exception)
{
if (log.IsFatalEnabled)
{
log.Fatal(message, exception);
}
} }
}

7.现在把该类库项目生成一下,这样在希望使用日志功能的项目里直接添加对该类库的引用即可,比如在web项目中要使用日志功能,我把该类库的dll添加到了我的项目里

下面是我的代码结构

8.使用的方式是:Logs.LogInfo("记录日志信息。");其他的方法跟此类似,不再赘述。

后续说明:以上的日志的配置文件是一个独立的配置文件(log4net.config)。当然也可以把配置文件合并到Web项目自带的配置文件当中,配置内容如下,

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<!--Excel磁盘路径-->
<add key="filePath" value="C:\alley\temp\ws02.xlsx" />
<!--数据所在的Sheet名-->
<add key="sheetName" value="ws02" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<file type="log4net.Util.PatternString" value="C:\DrizzleAlleyLog\%date{yyyy-MM}\%date{yyyy-MM-dd}.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd" />
<staticLogFileName value="true" />
<param name="MaxSizeRollBackups" value="100" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="All" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration>

这里需要说明的一点是以下配置项必须放是 <configuration>的第一个子项,要不然会报错。

<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>

这样在类库项目的AssemblyInfo.cs 文件中添加对web项目log4net.config文件的监视应该修改为如下形式,

//watch config
[assembly: log4net.Config.XmlConfigurator(Watch = true)]

C#中web项目使用log4net日志的更多相关文章

  1. eclipse中web项目部署以后jsp的java文件找不到问题(Tomcat配置serverlocations)

    我的开发环境:eclipse kepler (4.3)+tomcat7.0.42. 在我想看eclipse中web项目jsp文件被tomcat转换成java以后的java源文件的位置,发现正常情况下的 ...

  2. MyEclipse中Web项目文件名上红色和黄色感叹号处理

      MyEclipse中Web项目文件名上红色和黄色感叹号处理     先说红色感叹号: 那就是代表错误,说明你引用的JAR包位置无效,所以,你应该重新将包导入到工程里面去,这个具体应该会吧,如果是初 ...

  3. 如何修改myeclipse中web项目的工作路径或默认路径

    如何修改myeclipse中web项目的工作路径或默认路径 博客分类: J2EE开发技术指南   安装好myeclipse后,第一次启动myeclipse时,都会弹出会弹出Workspace Laun ...

  4. IDEA中WEB项目本地调试和发布的配置分开配置

    一个Web项目,开发的时候设置了一些本地内容,比如IP地址,还有本地目录等.开发完成后,要发布到服务器上时,这些本地相关的配置,就需要配置成服务器上IP或目录. 原先的做法就是部署打包的时候,把相关的 ...

  5. VS2013中web项目中自动生成的ASP.NET Identity代码思考

    vs2013没有再分webform.mvc.api项目,使用vs2013创建一个web项目模板选MVC,身份验证选个人用户账户.项目会生成ASP.NET Identity的一些代码.这些代码主要在Ac ...

  6. Eclipse中WEB项目自动部署到Tomcat

    原因 很长时间没用Eclipse了,近期由于又要用它做个简单的JSP项目,又要重新学习了,虽然熟悉的很快,但记忆总是很模糊,偶尔犯错,以前很少写博客,现在感觉还是很有必要的,编程中每个人对于犯过的错误 ...

  7. Eclipse中web项目的默认发布路径改为外部Tomcat中webapp路径

    可参考http://www.cnblogs.com/mihu/p/4772509.html 和http://www.cnblogs.com/dyllove98/archive/2013/06/07/3 ...

  8. tomcat中web项目编译后的结构

    一. jsp文件在WEB-INF中 原项目结构及编译后的项目结构,原web项目与编译文件的对应关系如下:java下面的.java文件----->WEB-INF下的classes中,target下 ...

  9. eclipse或Myeclipse中web项目没有run on server时怎么办?

    文章转载至:http://blog.csdn.net/hongchangfirst/article/details/7722703 web项目没有run on server 1.首先确保正确安装Tom ...

随机推荐

  1. css的relative与absolute(一)

    relative与absolute是position的两个值,本文对这两个值得关系进行了一个小实验 实验一: 首先定义了两个div元素,代码如下所示: <!doctype html> &l ...

  2. Django之Model操作进阶篇

    常用参数 null 数据库中字段是否可以为空 db_column 数据库中字段的列名 default 数据库中字段的默认值 primary_key 数据库中字段是否为主键 db_index 数据库中字 ...

  3. 跨域Ajax原理以及浏览器同源策略

  4. ruby 【rails在win7_64位操作系统安装】

    gem update --system --source http://production.s3.rubygems.org 安装截图

  5. Windows系统 为 QT5软件 搭建 OpenCV2 开发环境

    Windows系统 为 QT5软件 搭建 OpenCV2 开发环境 我们的电脑系统:Windows 10 64位 Qt5 软件:Qt 5. 7. 0 OpenCV2 版本:OpenCV2.4.10 1 ...

  6. ROS Learning-004 beginner_Tutorials 介绍简单的ROS命令

    ROS Indigo beginner_Tutorials-03 介绍简单的ROS命令 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04 ...

  7. QGraphicsScene绘制网格背景

    博客转载自:https://blog.csdn.net/u010177010/article/details/51496038 //两条轴线QPolygonF myPolygon1; myPolygo ...

  8. 服务机器人的小脑——SLAM技术

    博客转载自:https://www.leiphone.com/news/201706/DZlMscTwdIzFyodg.html 雷锋网(公众号:雷锋网)按:本文作者SLAMTEC(思岚科技公号sla ...

  9. CentOS6.5 安装python

    前言: CENTOS 6.X 系列默认安装的 Python 2.6 ,目前开发中主要是使用 Python 2.7 ,这两个版本之间还是有不少差异的,程序在 Python 2.6 下经常会出问题. 比如 ...

  10. 51NOD1052 最大M字段和

    传送门 分析 一眼看去我们自然会想到dp[i][j][k]表示区间[i,j]中选k个子段的最大值.然后我们考虑降去一维.我们设dp[i][j]表示考虑了前i个数,在选了a[i]的情况下共有j个子段的最 ...