log4net(一)将log4net封装在类库项目中

在dll类库项目中:

1、下载包:添加log4net.dll的引用

2、添加配置文件并命名为:log4net.config。设置复制到输出目录:始终复制

<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<configSections>
		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
	</configSections>

	<!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低)-->
	<log4net>
		<!--正常日志类-->
		<logger name="info">
			<level value="ALL" />
			<appender-ref ref="InfoAppender" />
		</logger>

		<!--错误日志类-->
		<logger name="error">
			<level value="ALL" />
			<appender-ref ref="ErrorAppender" />
		</logger>

		<!--正常日志附加介质-->
		<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
			<!--日志路径-->
			<param name= "File" value= "Log\"/>
			<!--是否是向文件中追加日志-->
			<param name= "AppendToFile" value= "true"/>
			<!--log保留天数-->
			<param name= "MaxSizeRollBackups" value= "7"/>
			<!--写到一个文件-->
			<staticLogFileName value="false"/>
			<!--单个文件大小。单位:KB|MB|GB-->
			<maximumFileSize value="200MB"/>
			<!--最多保留的文件数,设为"-1"则不限-->
			<maxSizeRollBackups value="-1"/>
			<!--日志文件名格式为:2017-07-25 Info.html-->
			<param name= "DatePattern" value= "yyyy-MM-dd &quot;Info.MD&quot;"/>
			<!--日志根据日期滚动-->
			<param name= "RollingStyle" value= "Date"/>
			<!--日志文本格式-->
			<layout type="log4net.Layout.PatternLayout">
				<!--%d  时间,等价于 date-->
				<!--%t  线程-->
				<!--%-5p  日志级别-->
				<!--%C  出错类,等价于 class,可以使用:%class{1},如果给出了精度说明符,则只会打印类名中最右边的组件的相应数量。默认情况下,类名以完全限定形式输出。-->
				<!--%L  出错行-->
				<!--%M  方法名,等价于 method-->
				<!--%m  日志信息,等价于 message-->
				<!--%n  换行-->
				<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n/******************************   %d{yyyy-MM-dd HH:mm:ss,fff} [%t] %-5p   ******************************/%n★类名:%class{1}%n♦方法名:%M - 第 [%L] 行%n♥消息:%m%n%n" />
			</layout>
		</appender>

		<!--错误日志附加介质-->
		<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
			<!--日志路径-->
			<param name= "File" value= "Log\"/>
			<!--是否是向文件中追加日志-->
			<param name= "AppendToFile" value= "true"/>
			<!--log保留天数-->
			<param name= "MaxSizeRollBackups" value= "7"/>
			<!--日志文件名是否是固定不变的-->
			<param name= "StaticLogFileName" value= "false"/>
			<!--日志文件名格式为:2017-07-25.log-->
			<param name= "DatePattern" value= "yyyy-MM-dd &quot;Error.MD&quot;"/>
			<!--日志根据日期滚动-->
			<param name= "RollingStyle" value= "Date"/>
			<param name="MaxFileSize" value="1"/>
			<!--日志文本格式-->
			<layout type="log4net.Layout.PatternLayout">
				<!--%d  时间,等价于 date-->
				<!--%t  线程-->
				<!--%-5p  日志级别-->
				<!--%C  出错类,等价于 class,可以使用:%class{1},如果给出了精度说明符,则只会打印类名中最右边的组件的相应数量。默认情况下,类名以完全限定形式输出。-->
				<!--%L  出错行-->
				<!--%M  方法名,等价于 method-->
				<!--%m  日志信息,等价于 message-->
				<!--%n  换行-->
				<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n/******************************   %d{yyyy-MM-dd HH:mm:ss,fff} [%t] %-5p   ******************************/%n★类名:%class{1}%n♦方法名:%M - 第 [%L] 行%n♥消息:%m%n%n" />
			</layout>
		</appender>
		
	</log4net>
</configuration>

 3、在AssemblyInfo.cs文件里,写入代码,这样就和项目工程建立起联系

//增加日志配置
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

4、封装一个类:LogHelper

注意:e=null不能直接写入,否则会异常

    /// <summary>
    /// 日志类
    /// </summary>
    public class LogHelper
    {
        private static ILog loginfo = LogManager.GetLogger("info");
        private static ILog logerror = LogManager.GetLogger("error");

        /// <summary>
        /// 打印正常日志
        /// </summary>
        /// <param name="message"></param>
        /// <param name="e"></param>
        public static void WriteLogInfo(object message, Exception e = null)
        {
            if (e == null)
            {
                loginfo.Info(message);
            }
            else
            {
                loginfo.Info(message, e);
            }
        }
        /// <summary>
        /// 打印错误日志
        /// </summary>
        /// <param name="message"></param>
        /// <param name="e"></param>
        public static void WriteLogError(object message, Exception e = null)
        {
            if (e == null)
            {
                logerror.Error(message);
            }
            else
            {
                logerror.Error(message, e);
            }
        }
    }

5、主程序调用:(我这个是以接口的形式访问,可以写在控制台里)

/// <summary>
/// 首页
/// </summary>
/// <returns></returns>
[HttpGet]
public string Index()
{
	LogHelper.WriteLogInfo("正常日志");
	LogHelper.WriteLogError("错误日志");
	return "OK";
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值