C#中web项目使用log4net日志
我准备把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日志的更多相关文章
- eclipse中web项目部署以后jsp的java文件找不到问题(Tomcat配置serverlocations)
我的开发环境:eclipse kepler (4.3)+tomcat7.0.42. 在我想看eclipse中web项目jsp文件被tomcat转换成java以后的java源文件的位置,发现正常情况下的 ...
- MyEclipse中Web项目文件名上红色和黄色感叹号处理
MyEclipse中Web项目文件名上红色和黄色感叹号处理 先说红色感叹号: 那就是代表错误,说明你引用的JAR包位置无效,所以,你应该重新将包导入到工程里面去,这个具体应该会吧,如果是初 ...
- 如何修改myeclipse中web项目的工作路径或默认路径
如何修改myeclipse中web项目的工作路径或默认路径 博客分类: J2EE开发技术指南 安装好myeclipse后,第一次启动myeclipse时,都会弹出会弹出Workspace Laun ...
- IDEA中WEB项目本地调试和发布的配置分开配置
一个Web项目,开发的时候设置了一些本地内容,比如IP地址,还有本地目录等.开发完成后,要发布到服务器上时,这些本地相关的配置,就需要配置成服务器上IP或目录. 原先的做法就是部署打包的时候,把相关的 ...
- VS2013中web项目中自动生成的ASP.NET Identity代码思考
vs2013没有再分webform.mvc.api项目,使用vs2013创建一个web项目模板选MVC,身份验证选个人用户账户.项目会生成ASP.NET Identity的一些代码.这些代码主要在Ac ...
- Eclipse中WEB项目自动部署到Tomcat
原因 很长时间没用Eclipse了,近期由于又要用它做个简单的JSP项目,又要重新学习了,虽然熟悉的很快,但记忆总是很模糊,偶尔犯错,以前很少写博客,现在感觉还是很有必要的,编程中每个人对于犯过的错误 ...
- Eclipse中web项目的默认发布路径改为外部Tomcat中webapp路径
可参考http://www.cnblogs.com/mihu/p/4772509.html 和http://www.cnblogs.com/dyllove98/archive/2013/06/07/3 ...
- tomcat中web项目编译后的结构
一. jsp文件在WEB-INF中 原项目结构及编译后的项目结构,原web项目与编译文件的对应关系如下:java下面的.java文件----->WEB-INF下的classes中,target下 ...
- eclipse或Myeclipse中web项目没有run on server时怎么办?
文章转载至:http://blog.csdn.net/hongchangfirst/article/details/7722703 web项目没有run on server 1.首先确保正确安装Tom ...
随机推荐
- Android实现智能提示的文本输入框AutoCompleteTextView
今天我们要讲一个十分简单的内容,就是一个安卓控件的使用,用法很简单,但是很常用的一个.这里我用两种不同的写法来处理.当然,无论用哪一种写法,效果都是一样的. 我们先来看效果图. 要实现这种效果十分简单 ...
- android键盘的Done按钮
在EditText中,可以使用setImeOptions()方法来来开启软键盘的"Done"按钮. 示例代码如下:editText.setImeOptions(EditorInfo ...
- Android开源地图项目 BigPlanetTracks 学习随笔
一. app主体部分 [tyt.android.bigplanettracks] 二. 地图部分 [tyt.android.bigplanettracks.maps] ...
- TCP UDP HTTP 的关系和区别
TCP UDP HTTP 三者的关系: TCP/IP是个协议组,可分为四个层次:网络接口层.网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传 ...
- php返回文件路径
1 basename — 返回路径中的文件名部分 如果文件名为test.php,路径为www/hj/test.php echo basename($_SERVER['PHP_SELF']); 输出为: ...
- mysql sequelize 聚合
User.findAll({attributes: [[sequelize.fn('COUNT', sequelize.col('*')), 'email']],raw: true }).then(f ...
- 阿里云、宝塔、wordpress建站
1 阿里云 购买一个学生机就行啦 2 宝塔 2.1 更改阿里云的镜像 技巧01:先关掉阿里云之前的镜像 技巧02:到镜像市场中寻找宝塔的镜像资源 2.2 配置安全组 宝塔的控制面板需要开通端口 888 ...
- function几种自执行的形式
1.(function(){})();这种是最常用的形式 2.var t = function(){}(); 3.-function(){}(); 这三种形式都能自执行
- Android 中的菜单 OptionsMenu的简单应用
OptionsMenu就是安卓手机中的菜单选项 首先 要实现对菜单的操作就要先重写OnCreateOptionsMenu(Menu menu)方法 通常有两种方法来实现对菜单中选项的添加 第一种是动态 ...
- CSS相关知识和经验的碎片化记录
1.子DIV块中设置margin-top时影响父DIV块位置的问题 解决办法1:若子DIV块中使用margin-top,则在父DIV块中添加:overflow:hidden; 解决办法2:在子DIV块 ...