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 ...
随机推荐
- 如何判断一个字符串是否是UTF8编码
UTF8是以8bits即1Bytes为编码的最基本单位,当然也可以有基于16bits和32bits的形式,分别称为UTF16和UTF32,但目前用得不多,而UTF8则被广泛应用在文件储存和网络传输中. ...
- 学习CSS的思路(转)
两周之前写过该系列的第一篇,其实当时只是一个想法,这段时间迟迟未更新,是在思考一个解决过程.现在初有成效,就开更吧. 1. 一个段子 开题不必太严肃,写博客也不像写书,像聊天似的写东西是最好的表达方式 ...
- MVC分层思想、SSM编程架构
1 MVC 和 SSM
- JS中的引用类型
JS的数据类型可以分为两类:一类是原始类型(比如数字.布尔值.字符串.undefined.null),另外就是对象类型.我们通常将对象类型称为引用类型.对象值都是引用.举个例子来说明,下如下的代码: ...
- essential C++中关于面向过程和面向对象的说明
昨天在阅读essential C++中看到了一个关于面向过程和面向对象的区别的例子,感觉挺好的.记录下来.... 这个例子是关于照相机的.照相机有三个性质,一个是控制位置:通常使用3个浮点数据来表示其 ...
- Zbar 大图像分析
博客转载自:https://blog.csdn.net/sunflower_boy/article/details/50429252 为了减少处理时间,可以设定更大的扫描间距,减少不必要的解码类型,去 ...
- WOJ 46 完全背包
高级的暴力,神仙优化…… 首先$O(n^{3})$的$dp$很好想,然后这样可以$O(1)$地回答询问. 考虑到所有物品的体积是一个连续的区间,所以说我们可以合并一些物品来达到预处理时间均摊的效果. ...
- Thread.currentThread().getContextClassLoader() 和 Class.getClassLoader()区别
查了一些资料也不是太明白两个的区别,但是前者是最安全的用法 打个简单的比方,你一个WEB程序,发布到Tomcat里面运行.首先是执行Tomcat org.apache.catalina.startup ...
- 连接Excel数据库
SQL语法:http://www.w3school.com.cn/sql/sql_syntax.asp Ctrl键拖(也就是复制) 先输入1,2,然后下拉 一.问题的提出 在ASP编程中会遇到很多大大 ...
- 获取安装的apk应用信息
//获取安装的应用名称 private List<String> getInstalledAppNames(){ List<PackageInfo> packages =thi ...