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 ...
随机推荐
- Java更新
Java I/O 总结 JVM(8):JVM知识点总览-高级Java工程师面试必备 细数JDK里的设计模式 Java中创建对象的5种不同方法 关于Java Collections的几个常见问题 类在什 ...
- 使用批处理替换windows系统中的hosts文件
chcp 936 >nul@echo offmode con lines=30 cols=60%1 mshta vbscript:CreateObject("Shell.Applica ...
- yii2常用excel操作库
yii2使用较多的excel操作库 1."phpoffice/phpexcel" https://github.com/PHPOffice/PHPExcel/archive/1.8 ...
- 269D Maximum Waterfall
传送门 题目大意 给出一些墙,水从高往低流,每次只能到达一面墙,选择一个路径,使得路径上的流量的最小值最大. 分析 这是一道经典的扫描线题,我们发现能够合法的线段对数至多只有n对.将一条线段拆成两个点 ...
- DWR原理探秘
DWR原理探秘 DWR(Direct Web Remoting)远程Web命令;是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可 ...
- 带有通配符的字符串匹配算法-C/C++
日前某君给我出了这样一道题目:两个字符串,一个是普通字符串,另一个含有*和?通配符,*代表零个到多个任意字符,?代表一个任意字符,通配符可能多次出现.写一个算法,比较两个字符串是否相等. 我花了四个小 ...
- Android将程序崩溃信息保存本地文件
大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了 ...
- 常用Git命令清单
我现在工作几乎每天都使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用 ...
- 国内物联网平台(3):QQ物联智能硬件开放平台
国内物联网平台(3)——QQ物联·智能硬件开放平台 马智 平台定位 将QQ帐号体系.好友关系链.QQ消息通道及音视频服务等核心能力提供给可穿戴设备.智能家居.智能车载.传统硬件等领域的合作伙伴,实现用 ...
- DefaultHttpClient 在oppo A57手机上网络请求报错
使用的库是xutils2.6.14,oppo A57 上调试的时候,请求接口时报错,但是其他手机都正常: com.lidroid.xutils.exception.HttpException: jav ...