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 ...
随机推荐
- C语言学习笔记--字符串
字符串是有序字符的集合,C 语言中没有字符串的概念,而是通过特殊的字符数组模拟字符串,是以'\0'结尾的字符数组. 1.字符数组与字符串 (1)在 C 语言中,字双引号引用的单个或多个字符是一种特殊的 ...
- MSSQL 数据库日志爆涨
解决方法有两种,现只用最简单的方法: 1.数据库属性----选项----恢复模式由完整改为简单--确定 2.右击数据库---任务---收缩 3.数据库属性----选项----恢复模式由简单改为完整-- ...
- android tween动画和Frame动画总结
tween 动画有四种 //透明度动画 AlphaAnimation aa = (AlphaAnimation) AnimationUtils.loadAnimation(MainActivity. ...
- JavaPersistenceWithMyBatis3笔记-第3章SQL Mappers Using XMLs-001
一. 1.Mapper 2.Service 3.Domain package com.mybatis3.domain; import java.io.Serializable; import java ...
- Linux 性能调优
一.简介 有些时候,我们特别关注程序的性能,特别是底层软件,比如驱动程序,OS等.为了更好的优化程序性能,我们必须找到性能瓶颈点,"好钢用在刀刃上"才能取得好的效果,否则可能白做工 ...
- 1、awk打开多个文件的方法
转载:http://www.cnblogs.com/Berryxiong/p/6209324.html 1.当awk读取的文件只有两个的时候,比较常用的有三种方法(1)awk 'NR==FNR{... ...
- vue 之 面向对象
JavaScript 语言中,生成实例对象的传统方法是通过构造函数. function Animal(name,age){ this.name = name; this.age = age; } An ...
- Redis面试考点
什么是Redis? Redis 是一个基于内存的高性能key-value数据库. Redis的特点以及缺点? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据 ...
- Notepad++一键编译运行(Python、Java、C++)
Python 需要事先安装Python配置好环境变量.建议使用Anaconda,方便. 在Notepad按F5,输入如下 cmd /k chdir /d $(CURRENT_DIRECTORY) &a ...
- IDEA内嵌Jetty启动SpringMvc项目
这段时间本意是想要研究一下Netty的多线程异步NIO通讯框架,看完原理想要做下源码分析.查找资料发现Jetty框架底层支持用Netty做web请求的多线程分发处理,于是就筹备着将Jetty框架内嵌到 ...