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 ...
随机推荐
- 使用Ping命令解析主机名解析出来的是IPv6
如果你经常使用ping命令,并身处局域网,那么你肯定会有这样一个疑问:Ping计算机名为何是IPv6地址? 问这个问题的人很少见,大多都是对网络知识稍有了解的人,所以才会闻到关于ping的问题,而且在 ...
- 工作的时候用到spring返回xml view查到此文章亲测可用
spring mvc就是好,特别是rest风格的话,一个 org.springframework.web.servlet.view.ContentNegotiatingViewResolver就可以根 ...
- Python之list的创建以及使用
list是一种有序的集合,可以随意添加和删除里面的元素. 空的list的定义:L = [] list当中的元素用[]概括起来. 在list当中可以使用索引来进行访问: 在这里我们要注意我们在进行索引的 ...
- struts2学习笔记(1)配置与基本操作
主要作用:将请求与页面区分开 配 置: 下载struts 2.0,在安装路径D:\项目学习\三大框架视屏\struts-2.3.24-all\struts-2.3.24\apps 中解压struts2 ...
- python笔记--4--面向对象
面向对象 Python中对象的概念很广泛,Python中的一切内容都可以称为对象,除了数字.字符串.列表.元组.字典.集合.range对象.zip对象等等,函数也是对象,类也是对象. 在Python中 ...
- 【整理】使用AIDL跨进程传递复杂对象的实践例子
首先定义对象类,并实现Parcelable接口,实现接口内的几个方法,看代码,Person.java package com.example.u3.aidltest; import android.o ...
- valgrind详解
调不尽的内存泄漏,用不完的Valgrind Valgrind 安装 1.valgrind 安装包下载地址:http://valgrind.org/downloads/repository.html(使 ...
- Java界面设计
---------------siwuxie095 Java SE(Java Standard Edition) 即 Java 标准版, 一般也 ...
- Realsense深度相机资料
1.Realsense SDK 2.0 Ubuntu 16.04 安装指导网址 https://github.com/IntelRealSense/librealsense/blob/master/d ...
- Android之对话框Dialog
首先是确认对话框 //确认对话框 private void showLog1() { AlertDialog.Builder dialog = new AlertDialog.Builder(this ...